了解可扩展标记语言(XML)。它不仅是 Web 早期的数据交换标准,至今仍是复杂文档结构和行业标准协议的核心。
XML (Extensible Markup Language) 是一种用于标记电子文件使其具有结构性的标记语言。它被设计用来传输和存储数据,其焦点是数据的内容,而 HTML 的焦点是数据的显示。
尽管 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 的语法比 HTML 更严格,必须遵循良好的格式(Well-formed)。
所有的 XML 文档都必须包含一个且仅一个根元素(该元素是所有其他元素的父元素)。
每个开始标签必须对应一个结束标签(例如 <note></note>),或使用自闭合标签。
在 XML 中,元素的属性值必须始终括在引号(单引号或双引号)中。
标签必须按照开启的相反顺序关闭。例如:<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 与其他流行格式进行对比,了解其优势与局限。
| 特性 | XML | JSON | HTML | YAML |
|---|---|---|---|---|
| 用途 | 存储和传输数据 | 轻量级数据交换 | 显示数据/ UI 结构 | 配置文件/人类易读 |
| 语法严谨性 | 极高(必须闭合) | 高(括号匹配) | 低(容错性强) | 中(缩进敏感) |
| 注释支持 | 支持 (<!-- -->) | 不支持 | 支持 (<!-- -->) | 支持 (#) |
| 数据验证 | 强大 (Schema/XSD) | 一般 (JSON Schema) | 无 | 无原生验证 |
编写高质量、易于维护的 XML。
在文档最顶端添加 <?xml version="1.0" encoding="UTF-8"?>。
对于包含多行或复杂结构的数据,建议使用子元素;属性更适合简单的元数据。
标签名应具有描述性,建议遵循 kebab-case 或 camelCase 并保持项目一致性。
对于对外公开或生产级数据,始终应提供 XSD 或 DTD 来规范数据结构。
绝对不是。虽然在普通 Web API 中被 JSON 取代,但在大型企业系统、行业协议、文档编辑软件以及需要复杂验证的领域,XML 仍然是绝对的核心。
它们是亲戚。XML 和 HTML 都源自 SGML。XML 用于描述数据,而 HTML 用于描述数据的展现形式和 UI 布局。
Schema 可以自动检查数据是否符合预定义的结构和业务规则,大大降底了不同系统间对接时的错误处理成本。