XML 介绍

什么是 XML?

了解可扩展标记语言(XML)。它不仅是 Web 早期的数据交换标准,至今仍是复杂文档结构和行业标准协议的核心。

定义

XML (Extensible Markup Language) 是一种用于标记电子文件使其具有结构性的标记语言。它被设计用来传输和存储数据,其焦点是数据的内容,而 HTML 的焦点是数据的显示。

XML 有什么用处?

尽管 JSON 席卷了 Web API,但 XML 在许多关键领域依然不可替代。

配置文件

Java Spring、Android 布局、Maven (pom.xml) 等大型项目的标准配置格式。

行业标准协议

SOAP、SAML、RSS/Atom 等协议以及 Microsoft Office 文档 (OpenXML) 的底层格式。

跨系统通信

在异构系统之间交换复杂数据,具有极强的严谨性和验证能力(Schema)。

核心特性

为什么 XML 依然是复杂系统的首选?

可扩展性

允许用户定义自己的标签,适应任何行业或领域的数据需求。

自描述性

结构高度清晰,标签直接描述数据的含义,易于理解和长期归档。

结构严谨

通过 DTD 或 XSD (Schema) 进行强类型检查,确保数据的完整性和准确性。

广泛支持

拥有数十年积累的成熟工具链(XPath, XSLT, DOM 等),支持极其复杂的查询和转换。

XML 语法规则

XML 的语法比 HTML 更严格,必须遵循良好的格式(Well-formed)。

1

必须有根元素

所有的 XML 文档都必须包含一个且仅一个根元素(该元素是所有其他元素的父元素)。

2

标签必须正确闭合

每个开始标签必须对应一个结束标签(例如 <note></note>),或使用自闭合标签。

3

属性值必须加引号

在 XML 中,元素的属性值必须始终括在引号(单引号或双引号)中。

4

严格嵌套关系

标签必须按照开启的相反顺序关闭。例如:<b><i>text</i></b> 是正确的。

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <item id="1">
    <name>Sample Item</name>
    <properties>
      <active>true</active>
      <value>42</value>
    </properties>
  </item>
</root>

多维度对比

将 XML 与其他流行格式进行对比,了解其优势与局限。

特性XMLJSONHTMLYAML
用途存储和传输数据轻量级数据交换显示数据/ UI 结构配置文件/人类易读
语法严谨性极高(必须闭合)高(括号匹配)低(容错性强)中(缩进敏感)
注释支持支持 (<!-- -->)不支持支持 (<!-- -->)支持 (#)
数据验证强大 (Schema/XSD)一般 (JSON Schema)无原生验证

使用建议

编写高质量、易于维护的 XML。

始终包含版本声明

在文档最顶端添加 <?xml version="1.0" encoding="UTF-8"?>。

优先使用元素而非属性

对于包含多行或复杂结构的数据,建议使用子元素;属性更适合简单的元数据。

使用清晰的命名规范

标签名应具有描述性,建议遵循 kebab-case 或 camelCase 并保持项目一致性。

配备 Schema 进行验证

对于对外公开或生产级数据,始终应提供 XSD 或 DTD 来规范数据结构。

常见问题

XML 是不是已经过时了?

绝对不是。虽然在普通 Web API 中被 JSON 取代,但在大型企业系统、行业协议、文档编辑软件以及需要复杂验证的领域,XML 仍然是绝对的核心。

XML 和 HTML 有什么关系?

它们是亲戚。XML 和 HTML 都源自 SGML。XML 用于描述数据,而 HTML 用于描述数据的展现形式和 UI 布局。

为什么要用 XML 验证 (Schema)?

Schema 可以自动检查数据是否符合预定义的结构和业务规则,大大降底了不同系统间对接时的错误处理成本。