XML(eXtensible Markup Language,可扩展标记语言)是一种用于描述、存储和传输数据的通用标记语言。
它不是编程语言,而是一种数据表示规范,在配置文件、数据交换、Web Service 等领域被广泛使用。
一、什么是 XML?
1️⃣ XML 的定义
XML 是一种:
- 自定义标签
- 结构化
- 纯文本
的数据描述语言。
它的目标不是显示数据,而是描述数据的含义和层级结构。
2️⃣ XML 能做什么?
- 描述配置文件(如 Maven、Spring)
- 不同系统之间的数据交换
- Web Service(SOAP)
- 文档结构化存储
- 早期前后端数据传输格式
二、XML 与 HTML 的区别
| 对比项 | XML | HTML |
|---|---|---|
| 目的 | 描述数据 | 展示数据 |
| 标签 | 自定义 | 固定 |
| 语法 | 严格 | 宽松 |
| 是否区分大小写 | 是 | 否 |
| 是否可扩展 | 是 | 否 |
📌 一句话:
HTML 面向人,XML 面向程序。
三、XML 的基本结构
一个最简单的 XML 示例
<?xml version="1.0" encoding="UTF-8"?>
<student>
<name>Tom</name>
<age>20</age>
</student>
结构说明
<?xml ... ?>:XML 声明(必须在第一行)<student>:根元素(Root)<name>、<age>:子元素- 元素必须成对出现
四、XML 的核心语法规则(重点)
1️⃣ 必须有且只有一个根元素
<!-- 正确 -->
<root></root>
<!-- 错误 -->
<a></a>
<b></b>
2️⃣ 标签必须正确嵌套
<!-- 正确 -->
<a><b></b></a>
<!-- 错误 -->
<a><b></a></b>
3️⃣ 标签大小写敏感
<name>Tom</name>
<Name>Tom</Name> <!-- 不同标签 -->
4️⃣ 属性必须加引号
<user id="1" />
5️⃣ 特殊字符需要转义
| 字符 | 写法 |
|---|---|
< | < |
> | > |
& | & |
" | " |
' | ' |
五、XML 元素 vs 属性
元素写法
<user>
<id>1</id>
</user>
属性写法
<user id="1"></user>
📌 使用建议
- 数据内容 → 元素
- 元数据 / 标识 → 属性
六、XML 的注释与空元素
注释
<!-- 这是 XML 注释 -->
空元素
<line />
七、XML 命名空间(Namespace)
为什么需要命名空间?
防止不同 XML 规范标签冲突。
示例
<book xmlns:h="http://www.w3.org/TR/html4/">
<h:title>XML 入门</h:title>
</book>
八、XML 校验方式(了解即可)
1️⃣ DTD(旧)
- 语法简单
- 功能有限
2️⃣ XSD(主流)
- 类型丰富
- 支持命名空间
- 更严格
九、XML 的解析方式
| 方式 | 特点 |
|---|---|
| DOM | 一次性读入内存 |
| SAX | 事件驱动,节省内存 |
| StAX | 拉模式解析 |
| XPath | 查询节点 |
十、XML 的优缺点
优点
- 结构清晰
- 可扩展
- 跨平台
- 可读性强
缺点
- 体积大
- 冗余多
- 解析性能不如 JSON
十一、XML vs JSON(快速对比)
| 项目 | XML | JSON |
|---|---|---|
| 可读性 | 高 | 高 |
| 体积 | 大 | 小 |
| 校验能力 | 强 | 弱 |
| 主流程度 | 下降 | 上升 |
📌 现实情况:
- 新系统偏向 JSON
- 配置 / 标准 / 企业系统仍大量使用 XML
十二、学习路线建议
- 掌握 XML 语法规则
- 学会阅读 XML 配置文件
- 学习 XPath
- 了解 XSD
- 结合语言解析(Java / Python / PHP)
总结
✔ XML 是数据描述语言,不是编程语言
✔ 语法严格,结构清晰
✔ 仍然是后端开发必备基础
✔ 理解 XML,有助于读懂大量配置和老系统