XML
eXtensible Markup Language 可扩展标记语言
数字世界的基石(标签定义结构、属性补充细节),是一种用于标记电子文件使其具有结构性的标记语言,由 W3C 开发和维护。
主要设计目的是用于数据的存储、传输和交换,强调数据的结构和内容。它允许用户根据实际需求自定义标签(标签可扩展),以准确描述数据的含义和结构,使得不同系统之间能够方便地进行数据交互。区别于 HTML,常被用于描述服务接口和数据传输格式。
1. 基本特性
- 自描述性:XML 文档通过标签来描述数据的结构和含义,使得数据具有很强的自描述性。即使没有额外的文档说明,也能通过标签名大致了解数据的内容。
- 可扩展性:用户可以根据实际需求自定义标签和文档结构,非常灵活。不同的行业和应用场景可以根据自身的数据需求创建特定的 XML 词汇表。(例如:URDF 可用于描述机器人 )
- 平台无关性:XML 是一种文本格式,不依赖于任何特定的操作系统或编程语言,这使得它在不同的系统之间能够方便地进行数据交换和共享。
2. 语法规则
XML 文档是一个严格的树形结构,其语法约束比 HTML 更加严格。
-
标签必须成对出现或自闭合
<tag></tag>或<tag /> -
严格区分大小写
<Node>与<node>是不同标签 -
标签必须正确嵌套,不允许交叉嵌套
-
属性值必须加上引号
attr="value" -
有且仅有一个根元素
-
特殊字符转义 例如:
<→<,&→& -
命名空间声明,当存在多套标签体系时,通过
xmlns声明命名空间,并使用 URI 进行唯一标识
<root>
</root>
XML Schema 验证
仅有“语法正确”的 XML 并不足以保证“语义正确”,因此引入了模式验证机制。
常见 Schema 形式包括:
-
DTD(Document Type Definition)
早期方案,表达能力有限,逐渐被淘汰 -
XSD(XML Schema Definition)
目前主流方案,可精确定义:- 元素层级关系
- 数据类型(string、int、float 等)
- 取值范围与约束
- 是否可选、是否可重复
Schema 的作用本质上是:
将“自由文本结构”约束为“可验证的数据模型”
这在工程系统、接口设计、机器人描述文件中极其重要。
现代技术的应用
web 服务通信
早期 Web Service(如 SOAP)大量基于 XML 构建:
- 请求与响应具备严格结构
- 可通过 Schema 自动验证
- 适合强类型、企业级系统
尽管现代 REST 更偏向 JSON,但 XML 在金融、电信、政务系统中仍被广泛使用。
系统配置管理
XML 广泛用于配置文件,例如:
-
工业控制系统
-
中间件与服务器配置
-
构建工具与工程描述文件
其优势在于:
-
结构清晰
-
可读性强
-
易于自动生成与解析
文档格式
大量文档标准基于 XML:XML 在此类场景中承担“语义骨架”的角色。
-
Office Open XML(docx、xlsx)
-
SVG(矢量图形)
-
MathML(数学公式描述)
移动应用与嵌入式系统
在资源受限或对稳定性要求极高的系统中,XML 仍被使用于:
-
应用资源描述
-
硬件设备配置
-
协议数据封装
尽管 JSON 更轻量,但 XML 在“可验证性”和“结构严谨性”方面仍具有优势。