XML(eXtensible Markup Language,可扩展标记语言)是一种用于描述、存储和传输数据的通用标记语言
它不是编程语言,而是一种数据表示规范,在配置文件、数据交换、Web Service 等领域被广泛使用。


一、什么是 XML?

1️⃣ XML 的定义

XML 是一种:

  • 自定义标签
  • 结构化
  • 纯文本
    的数据描述语言。

它的目标不是显示数据,而是描述数据的含义和层级结构


2️⃣ XML 能做什么?

  • 描述配置文件(如 Maven、Spring)
  • 不同系统之间的数据交换
  • Web Service(SOAP)
  • 文档结构化存储
  • 早期前后端数据传输格式

二、XML 与 HTML 的区别

对比项XMLHTML
目的描述数据展示数据
标签自定义固定
语法严格宽松
是否区分大小写
是否可扩展

📌 一句话
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️⃣ 必须有且只有一个根元素

&lt;!-- 正确 -->
&lt;root>&lt;/root>

&lt;!-- 错误 -->
&lt;a>&lt;/a>
&lt;b>&lt;/b>


2️⃣ 标签必须正确嵌套

&lt;!-- 正确 -->
&lt;a>&lt;b>&lt;/b>&lt;/a>

&lt;!-- 错误 -->
&lt;a>&lt;b>&lt;/a>&lt;/b>


3️⃣ 标签大小写敏感

&lt;name>Tom&lt;/name>
&lt;Name>Tom&lt;/Name> &lt;!-- 不同标签 -->


4️⃣ 属性必须加引号

&lt;user id="1" />


5️⃣ 特殊字符需要转义

字符写法
<&lt;
>&gt;
&&amp;
"&quot;
'&apos;

五、XML 元素 vs 属性

元素写法

&lt;user>
  &lt;id>1&lt;/id>
&lt;/user>

属性写法

&lt;user id="1">&lt;/user>

📌 使用建议

  • 数据内容 → 元素
  • 元数据 / 标识 → 属性

六、XML 的注释与空元素

注释

&lt;!-- 这是 XML 注释 -->

空元素

&lt;line />


七、XML 命名空间(Namespace)

为什么需要命名空间?

防止不同 XML 规范标签冲突。

示例

&lt;book xmlns:h="http://www.w3.org/TR/html4/">
    &lt;h:title>XML 入门&lt;/h:title>
&lt;/book>


八、XML 校验方式(了解即可)

1️⃣ DTD(旧)

  • 语法简单
  • 功能有限

2️⃣ XSD(主流)

  • 类型丰富
  • 支持命名空间
  • 更严格

九、XML 的解析方式

方式特点
DOM一次性读入内存
SAX事件驱动,节省内存
StAX拉模式解析
XPath查询节点

十、XML 的优缺点

优点

  • 结构清晰
  • 可扩展
  • 跨平台
  • 可读性强

缺点

  • 体积大
  • 冗余多
  • 解析性能不如 JSON

十一、XML vs JSON(快速对比)

项目XMLJSON
可读性
体积
校验能力
主流程度下降上升

📌 现实情况

  • 新系统偏向 JSON
  • 配置 / 标准 / 企业系统仍大量使用 XML

十二、学习路线建议

  1. 掌握 XML 语法规则
  2. 学会阅读 XML 配置文件
  3. 学习 XPath
  4. 了解 XSD
  5. 结合语言解析(Java / Python / PHP)

总结

✔ XML 是数据描述语言,不是编程语言
✔ 语法严格,结构清晰
✔ 仍然是后端开发必备基础
✔ 理解 XML,有助于读懂大量配置和老系统