XML(Extensible Markup Language,可扩展标记语言)是一种用于存储、传输和描述结构化数据的标记语言。它由 W3C(World Wide Web Consortium) 制定,XML 1.0 于 1998 年正式成为 W3C Recommendation(推荐标准)。
虽然如今 JSON 已成为 Web API 数据交换的主流格式,但 XML 在 RSS、SOAP Web Service、Maven(pom.xml)、Android 布局、AndroidManifest.xml、Office Open XML(docx、xlsx、pptx)、SVG 等领域仍被广泛使用。
一、XML 是什么?
XML 是一种自描述(Self-describing)的结构化数据格式,通过标签嵌套组织数据。它与具体的平台、操作系统和编程语言无关,具有良好的可读性、扩展性和跨平台兼容性,因此长期被用于配置文件、数据交换和文档描述。
核心特点
| 特点 | 说明 |
|---|---|
| 📦 自描述 | 标签具有语义,数据含义清晰易懂 |
| 🌳 树形结构 | 采用严格的层级嵌套,适合表示复杂数据 |
| 🌐 跨平台 | 可在不同系统和编程语言之间交换数据 |
| 🛡️ 支持验证 | 可通过 DTD 或 XML Schema(XSD)验证文档结构和数据类型 |
| 📝 可扩展 | 可根据业务需求自定义元素和属性 |
二、XML 基本语法
<?xml version="1.0" encoding="UTF-8"?>
<!-- 图书馆示例 -->
<library>
<book id="001">
<title>Java 核心技术</title>
<author>张三</author>
<price currency="CNY">89.00</price>
<available>true</available>
</book>
<book id="002">
<title>Python 编程</title>
<author>李四</author>
<price currency="CNY">69.50</price>
<available>false</available>
</book>
</library>
XML 的组成
| 组成 | 说明 | 示例 |
|---|---|---|
| XML 声明 | 指定 XML 版本及编码 | <?xml version="1.0" encoding="UTF-8"?> |
| 元素(Element) | XML 数据的基本单位 | <title>Java</title> |
| 属性(Attribute) | 为元素提供附加信息 | <book id="001"> |
| 文本内容 | 元素中的实际数据 | 89.00 |
| 注释 | 不参与解析,仅供阅读 | <!-- 注释 --> |
XML 语法规则
| 规则 | 说明 |
|---|---|
| 必须有唯一根元素 | 一个 XML 文档只能有一个顶层元素 |
| 标签必须闭合 | <tag></tag> 或 <tag /> |
| 区分大小写 | <Book> 与 <book> 是不同元素 |
| 属性值必须加引号 | 可以使用单引号或双引号 |
| 特殊字符必须转义 | &、<、>、"、' |
三、常见错误
| ❌ 错误 | ✅ 正确 |
|---|---|
<book id=001> | <book id="001"> |
<book><title>Java</book></title> | <book><title>Java</title></book> |
<price>5 < 10</price> | <price>5 < 10</price> |
| 没有根元素 | 必须包含一个根元素 |
四、XML 实际应用
1. Spring 配置文件
<beans>
<bean id="userService" class="com.example.UserService">
<property name="name" value="张三"/>
</bean>
</beans>
2. RSS 订阅
<?xml version="1.0"?>
<rss version="2.0">
<channel>
<title>BugCome 技术博客</title>
<link>https://bugcome.com</link>
<item>
<title>XML 知识小课堂</title>
<pubDate>Mon, 13 Jul 2026</pubDate>
</item>
</channel>
</rss>
3. Android 布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:text="Hello XML!" />
</LinearLayout>
五、进阶技巧
CDATA
CDATA 用于原样保存内容,无需转义特殊字符。
<description>
<![CDATA[
5 < 10 && 10 > 5
]]>
</description>
XML 命名空间(Namespace)
命名空间用于避免不同 XML 标准之间的标签冲突。
<root xmlns:h="http://www.w3.org/TR/html4/">
<h:table>
HTML 表格
</h:table>
</root>
JavaScript 解析 XML(浏览器环境)
const parser = new DOMParser();
const xmlDoc = parser.parseFromString(xmlString, "text/xml");
const titles = xmlDoc.getElementsByTagName("title");
console.log(titles[0].textContent);
// Java 核心技术
六、XML 常见应用标准
XML 本身是一种通用标记语言,许多行业标准都是基于 XML 构建的,例如:
| 标准 | 用途 |
|---|---|
| RSS | 新闻订阅 |
| SOAP | Web Service |
| SVG | 矢量图形 |
| XHTML | HTML 的 XML 版本 |
| Maven POM | Java 项目配置 |
| Android XML | 页面布局、资源配置 |
| Office Open XML | Word、Excel、PowerPoint 文件格式 |
常见的
.docx、.xlsx、.pptx文件本质上都是基于 XML 构建,并经过 ZIP 压缩得到的文件格式。
七、XML 与 JSON 对比
| 特性 | XML | JSON |
|---|---|---|
| 文件体积 | 较大(标签冗余) | 较小 |
| 可读性 | 良好,层次清晰 | 简洁易读 |
| 解析速度 | 相对较慢 | 通常更快 |
| 数据类型 | 本身不定义数据类型,内容以文本形式表示,可通过 XSD 约束 | 原生支持字符串、数字、布尔、数组、对象、null |
| 注释 | 标准支持 | 标准 JSON 不支持(部分工具支持 JSONC) |
| 数据验证 | 支持 DTD、XML Schema(XSD) | 无统一标准验证机制 |
| 典型应用 | 配置文件、文档格式、企业系统 | Web API、前后端数据交换 |
八、什么时候选择 XML?
推荐使用 XML:
- 企业系统集成
- SOAP Web Service
- 配置文件
- 文档描述
- RSS 订阅
- Office 文档格式
- Android 布局
推荐使用 JSON:
- REST API
- 前后端接口
- JavaScript 数据处理
- 微服务通信
- 移动应用数据传输
九、在线体验
欢迎体验 BugCome XML 格式化工具。

📚 关注 BugCome,获取更多开发工具、编程知识与技术小课堂。
114



被折叠的 条评论
为什么被折叠?



