XML 解析器
XML(可扩展标记语言)是一种用于编码结构化数据的标记语言。虽然 JSON 在许多 Web API 中已经取代了 XML,但 XML 在企业系统、SOAP Web 服务和配置文件中仍然不可或缺。此工具可以解析和美化输出 XML,并提供正确的缩进。
规范
常见用例
- 格式化 SOAP API 请求和响应
- 读取和验证 Maven pom.xml 文件
- 解析 RSS 和 Atom Feed 内容
- 调试 Android 布局 XML 文件
- 处理 SVG 图形文件
- 检查 .NET 配置文件(web.config、app.config)
功能
- 使用正确缩进进行格式化输出
- 保留命名空间和前缀
- 处理 CDATA 段和处理指令
- 在元素旁显示属性
- 转换为 JSON 以便于程序化处理
- 验证 XML 结构的格式正确性
示例
Maven POM
试试看 →定义依赖项的 Maven 项目对象模型。
<?xml version="1.0" encoding="UTF-8"?>
<project>
<groupId>com.example</groupId>
<artifactId>my-app</artifactId>
<version>1.0.0</version>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
</dependency>
</dependencies>
</project>提示
- XML 区分大小写。<User> 和 <user> 是不同的元素。
- 所有元素必须正确关闭。使用 <br/> 作为自闭合标签。
- 属性值必须用引号括起来(单引号或双引号)。
- 对包含 < 或 & 字符的内容使用 CDATA 段。
理解 XML 解析器
XML(可扩展标记语言)是 W3C 标准,用于以人类可读且机器可解析的格式编码结构化数据。与拥有固定标签集的 HTML 不同,XML 允许你定义自己的元素和属性,使其成为创建特定领域标记语言的元语言。1.0 规范于 1998 年发布,至今仍被广泛使用。
XML 的核心特征是其严格的语法。每个开始标签必须有对应的结束标签(或者是自闭合标签)。属性必须用引号括起来。元素必须正确嵌套。遵循这些规则的文档是“格式正确的”。如果文档还符合某个模式(DTD、XML Schema 或 RELAX NG),则称为“有效的”。这种严格性使 XML 在使用不同技术构建的系统之间进行数据交换时非常可靠。
命名空间是 XML 避免元素名称冲突的机制。命名空间是与前缀关联的 URI(xmlns:soap="..."),确保 <soap:Envelope> 和 <html:body> 可以在同一文档中共存而不产生歧义。命名空间在 SOAP Web 服务、SAML 断言、SVG 图形以及任何组合多种词汇表的文档中都是必不可少的。
虽然 JSON 由于其更轻量的语法已在大多数 Web API 中取代了 XML,但 XML 在企业集成(SOAP、EDI)、文档格式(DOCX、XLSX、ODF)、配置(Maven pom.xml、.NET web.config、Android 布局)、内容聚合(RSS、Atom)和矢量图形(SVG)中仍然占据主导地位。理解 XML 对于使用遗留系统、企业软件和文档处理管道至关重要。
格式正确的 XML 遵循基本语法规则:正确嵌套、关闭标签、属性用引号括起以及单一根元素。任何 XML 解析器都可以读取格式正确的 XML。有效的 XML 更进一步——它符合定义了允许哪些元素和属性、它们的顺序和数据类型的模式(DTD、XML Schema 或 RELAX NG)。验证是可选的,但在双方需要就文档结构达成一致的数据交换中很重要。
命名空间通过将元素与 URI 关联来防止元素名称冲突。命名空间使用 xmlns:prefix="URI" 声明,然后用作元素的前缀(<prefix:element>)。默认命名空间(xmlns="URI",不带前缀)适用于该元素及其未限定的后代。URI 不需要指向实际资源——它仅作为唯一标识符。CDATA 段(<![CDATA[ ... ]]>)提供了一种包含含有 < 和 & 等字符的内容的方式,无需将它们转义为 < 和 &。这对于在 XML 元素中嵌入 JavaScript、SQL 查询或 HTML 片段非常有用。
XML 提供了 JSON 所缺乏的多项功能:用于组合词汇表的命名空间、用于正式验证的模式、用于在元素内容旁添加元数据的属性、处理指令、混合内容(文本与元素交错)以及用于声明式转换的 XSLT。对于面向文档的数据、复杂的企业集成以及需要系统间正式契约的场景,XML 是更好的选择。JSON 更适合 Web 应用中的简单数据交换,在这些场景中其更轻量的语法和通用工具支持比 XML 的结构丰富性更为重要。