些例子演示了 XML 文件、XML 格式化和 XML 转换(XSLT)。
还演示了与 XML 一起使用的 JavaScript(AJAX)。
查看 XML 文件
查看一个简单的 XML 文件(note.xml)
查看一个带有错误的相同的 XML 文件
查看一个 XML 的 CD 目录
查看一个 XML 的植物目录
查看一个 XML 的食物菜单
实例解释
XML 和 CSS
查看一个 XML 的 CD 目录
查看对应的 CSS 文件
显示由 CSS 文件格式化的 CD 目录
实例解释
XML 和 XSLT
查看一个 XML 的食物菜单
查看对应的 XSLT 样式表
显示由 XSLT 样式表格式化的食物菜单
实例解释
解析 XML 和 XML DOM
查看一个简单的 XML 文件(note.xml)
解析 XML 文件 - 跨浏览器实例
解析 XML 字符串 - 跨浏览器实例
实例解释
XML to HTML
查看一个 XML 的 CD 目录
把 XML 数据显示为 HTML 表格
实例解释
XML 应用程序
查看一个 XML 的 CD 目录
在 div 元素中显示 XML 数据
XML 节点导航
一个简单的 CD 目录应用程序
实例解释
来自服务器的 XML 输出
查看 ASP 如何返回 XML
查看 PHP 如何返回 XML
查看来自数据库的 XML 输出
实例解释
XML DOM 高级
获取 XML 元素的值
获取 XML 属性的值
更改 XML 元素的值
把一个新的属性添加到 XML 元素
创建一个新的 XML 元素
删除一个 XML 元素
实例解释
如您还有不明白的可以在下面与我留言或是与我探讨QQ群308855039,我们一起飞!
大数据项目开发过程中,ETL(Extract-Transform-Load)必不可少。即使目前 JSON 非常流行,开发人员也必定有机会面对远古系统的挑战,而 XML 格式的数据源作为经典存在浑身上下散发着浓浓 old money 的味道。
因为有 Newtonsoft.Json 这样优秀的 JSON 框架存在,开发人员可以很容易的对 JSON 格式的字符串反序列化。但是 XML 格式的数据就没有这么方便了:虽然 .NET 中内置了对 XML 序列化和反序列化的支持,但遇到需要对接外部数据时就不是很方便了。
从 XML 中提取目标数据最高效,也最麻烦的方式是直接使用 XmlReader :
<employee xmlns="urn:empl-hire">
<ID>12365</ID>
<hire-date>2003-01-08</hire-date>
<title>Accountant</title>
</employee>
使用以下代码对上述 hireDate.xml 文件读取:
using (XmlReader reader = XmlReader.Create("hireDate.xml")) {
// Move to the hire-date element.
reader.MoveToContent();
reader.ReadToDescendant("hire-date");
// Return the hire-date as a DateTime object.
DateTime hireDate = reader.ReadElementContentAsDateTime();
Console.WriteLine("Six Month Review Date: {0}", hireDate.AddMonths(6));
}
输出:
Six Month Review Date: 7/8/2003 12:00:00 AM
在 .NET Framework 3.5 发布后的时间里,开发人员可以使用 XDocument 来生成和解析 XML 文档,这要比 XmlReader 方便得多:
string str =
@"<?xml version=""1.0""?>
<!-- comment at the root level -->
<Root>
<Child>Content</Child>
</Root>";
XDocument doc = XDocument.Parse(str);
Console.WriteLine(doc.XPathSelectElement("//Child"));
输出:
<Child>Content</Child>
但硬编码的 XPath 并不方便调试,而且需要时刻关注空引用的问题。在 XML 格式复杂、项目工程比较大时使用起来也不方便。
在计算机科学中,可扩展样式表转换语言(英语:Extensible Stylesheet Language Transformations,缩写XSLT)是一种样式转换标记语言,可以将XML数据档转换为另外的XML或其它格式,如HTML网页,纯文字。XSLT最末的T字母表示英语中的“转换”(transformation)。
简单来说,开发人员可以借助 XSLT 技术编写一个 XML 文件,并使用该文件将一种 XML 格式转换为另一种 XML 。即:在对接复杂格式 XML 数据源时,开发人员可以编写一个后缀为 .xsl 的文件,并使用该文件将数据源格式转换为自己需要的格式(比如可以适配 XML 反序列化的格式)。
从一个简单的 XML 文件开始:
<?xml version="1.0" encoding="ISO-8859-1"?>
<catalog>
<cd>
<title>Empire Burlesque</title>
<artist>Bob Dylan</artist>
<country>USA</country>
<company>Columbia</company>
<price>10.90</price>
<year>1985</year>
</cd>
.
.
.
</catalog>
如果直接在浏览器打开这个文件:
假设我们只关心所有的 title 信息,可以使用下面的 cdcatalog.xsl 文件,该文件可以将 cdcatalog.xml 转为 XmlSerializer 所需要的格式:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsl:for-each select="catalog/cd">
<string>
<xsl:value-of select="title"/>
</string>
</xsl:for-each>
</ArrayOfString>
</xsl:template>
</xsl:stylesheet>
为了可以在浏览器中直接观察到转换效果,可以选择把 XSL 样式表链接到 XML 文档:向 XML 文档(”cdcatalog.xml”)添加 XSL 样式表引用即可。
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="cdcatalog.xsl"?>
<catalog>
<cd>
<title>Empire Burlesque</title>
<artist>Bob Dylan</artist>
<country>USA</country>
<company>Columbia</company>
<price>10.90</price>
<year>1985</year>
</cd>
.
.
.
</catalog>
刷新浏览器,打开开发者工具:
也可以在: https://www.coderbusy.com/demos/2021/1531/cdcatalog.xml 查看在线示例。
从上面的操作可以看出,调试 XLS 文件的成本是很低的,开发者可以很容易对 XLS 文件进行更改,并在短时间之内得到运行结果。
在 C# 中,可以使用 XslCompiledTransform 进行 XSL 转换。以下代码展示这个转换过程:
XslCompiledTransform xsl = new XslCompiledTransform();
xsl.Load("cdcatalog.xsl");
var sb = new StringBuilder();
using (var sw = new StringWriter(sb))
{
using (var xw = new XmlTextWriter(sw) { Formatting = Formatting.Indented })
{
xsl.Transform("cdcatalog.xml", xw);
}
}
var xml = sb.ToString();
Console.WriteLine(xml);
以上代码会产生如下输出:
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<string>Empire Burlesque</string>
<string>Hide your heart</string>
<string>Greatest Hits</string>
<string>Still got the blues</string>
<string>Eros</string>
.
.
.
</ArrayOfString>
转换 XML 不是目的,能直接拿到数据对象才是。以上的代码完成了格式转换,接着需要对转换好的 XML 字符串反序列化:
var xmlSerializer = new XmlSerializer(typeof(List<string>));
using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(xml)))
{
var list = (List<string>) xmlSerializer.Deserialize(ms);
foreach (var item in list)
{
Console.WriteLine(item);
}
}
以上代码借助 XmlSerializer 实现了反序列化功能,这会产生以下输出:
Empire Burlesque
Hide your heart
Greatest Hits
Still got the blues
Eros
...
本文所述的转换和反序列化技术已经在真实的生产环境中得到验证,千万级的数据处理也毫不费力。
本文包含的演示的代码和数据可以在 Gitee 上找到:
https://gitee.com/coderbusy/demo/tree/master/hello-xslt/HelloXslt
现代网络技术的世界中,XML(可扩展标记语言)和 HTML(超文本标记语言) 是两个非常重要的技术。尽管它们都使用标签和属性的格式来描述数据,但它们在形式和用途上有显著的区别。
XML,即 Extensible Markup Language(可扩展标记语言),是一种用于存储和传输数据的文本格式。XML 的设计宗旨是强调数据的结构化和准确性,提供了一种公认的标准格式。最主要的特点是它的自我描述性,即数据和数据的定义集成在一起,使得它在数据交换和数据存储方面具有极大优势。
而 HTML,即 HyperText Markup Language(超文本标记语言),则是一种用于创建网页的标准标记语言。HTML 的主要用途是描述网页的内容和结构,通过与 CSS(层叠样式表)和 JavaScript(脚本语言)的结合,实现丰富和互动的网络应用。
<book>
<title>Learning XML</title>
<author>John Doe</author>
<price>29.99</price>
</book>
<!DOCTYPE html>
<html>
<head>
<title>My Web Page</title>
</head>
<body>
<h1>Welcome to My Web Page</h1>
<p>This is an introductory paragraph.</p>
</body>
</html>
下面使用 Apifox 来修正和测试基于 XML 的 API 请求。
假设您需要向服务器发送 XML 格式的注册信息。您可以按照以下步骤使用 Apifox 进行设置:
<userRegistration>
<username>john_doe</username>
<password>securePassword123</password>
<email>john_doe@example.com</email>
</userRegistration>
<userRegistrationResponse>
<userId>12345</userId>
<username>john_dane</username>
<status>success</status>
</userRegistrationResponse>
打开 Apifox,选择开始新项目或者继续现有项目。接着点击“新建接口”,在接口设置页面,选择 POST 作为请求方法,并输入正确的请求 URL,比如 https://api.example.com/register (这里的 URL 应替换为真实可用的 URL)。在配置请求体时,选择 XML 格式,并将上述 XML 数据粘贴到配置区。
配置完成后,转到“运行测试”页面,点击“发送”按钮以向服务器发送构建的请求。请求发送后,检查响应部分,您应该看到类似于提供的 XML 格式的响应数据。
您还可以使用响应界面上的预览功能,该功能能让您以更直观的方式查看服务器返回的数据。
XML 和 HTML 虽然在标签和属性的语法上有所相似,但它们在使用场景、结构和功能上有显著的区别。XML 强调数据的准确传输和结构化存储,适合用于数据的交换和持久化存储等场景。而 HTML 强调内容呈现和用户交互,主要用于网页设计和开发。
*请认真填写需求信息,我们会在24小时内与您取得联系。