XML 是什么意思
XML 是 Extensible Markup Language(可扩展标记语言)的缩写。它于 1998 年成为 W3C 推荐标准,用你自己命名的标签来描述数据——这正是“可扩展”的含义。与 HTML 不同,XML 没有预定义的标签:商品目录可以使用 <product> 和 <price>,发票则可以使用 <item> 和 <total>。
一个最简单的 XML 文档是这样的:<book id="1"><title>XML Basics</title><year>2026</year></book>。XML 是纯文本,人可以直接阅读,所有编程语言也都能处理它。它只负责存储和组织数据,本身不执行任何操作;数据的含义和显示方式由程序决定。
XML 语法规则
每个 XML 文档都必须遵守几条严格的规则。符合这些规则的文档称为格式良好(well-formed)的文档:
- 有且只有一个根元素,其他所有元素都包含在其中。
- 每个元素都必须闭合:
<name>…</name>,或者像<br/>这样自闭合。 - 元素必须正确嵌套:应写成
<b><i>…</i></b>,不能写成<b><i>…</b></i>。 - 名称区分大小写:
<Item>和<item>是两个不同的元素。 - 属性值必须放在单引号或双引号中。
- 文本中的
&和<要分别转义为&和<。 - 可选的 XML 声明
<?xml version="1.0" encoding="UTF-8"?>必须位于文档最开头。
注释的写法是 <!-- … -->。XML 校验工具能在一秒内检查以上所有规则,并指出错误所在的行。
元素和属性
元素由开始标签、内容和结束标签组成:<price>19.90</price>。元素可以包含文本、其他元素,或两者兼有。属性是写在开始标签内的名值对:<price currency="EUR">。
| 元素 | 属性 | |
|---|---|---|
| 示例 | <color>red</color> | color="red" |
| 可以重复 | 是 | 否,每个元素中只能出现一次 |
| 可以包含子元素 | 是 | 否,只能是文本 |
| 顺序有意义 | 是 | 否 |
常见的约定是:数据本身以及可能重复或带有结构的内容用元素表示,ID、单位、类型等元数据则用属性表示。
格式良好的 XML 与有效的 XML
格式良好(well-formed)的 XML 遵守语法规则,不符合规则的文档会被解析器拒绝。有效(valid)的 XML 不仅格式良好,还符合某个 Schema;Schema 规定了允许出现哪些元素和属性、它们的顺序以及数据类型。
- DTD(Document Type Definition,文档类型定义)是最早的 Schema 语言,内置于 XML 1.0 中,还可以声明
之类的实体。 - XSD(XML Schema Definition)本身就用 XML 编写,支持日期、小数等数据类型。CFDI、NF-e 和 UBL 等电子发票格式都发布了 XSD Schema。
XML 命名空间
由于任何人都可以自定义标签名,两套词汇表可能会用到同一个名称——比如书的 <title>(书名)和人的 <title>(头衔)。命名空间通过把名称绑定到一个 URI 来区分它们。xmlns:cfdi="http://www.sat.gob.mx/cfd/4" 声明了前缀 cfdi,因此 <cfdi:Comprobante> 属于墨西哥 CFDI 4.0 词汇表。默认命名空间(不带前缀的 xmlns="…")适用于其内部所有不带前缀的元素。URI 只是一个标识符,不会从中下载任何内容。
XML、JSON 和 HTML 的区别
| XML | JSON | HTML | |
|---|---|---|---|
| 用途 | 存储和交换结构化数据与文档 | 交换数据,尤其用于 Web API | 显示网页 |
| 标签名或键名 | 自行定义 | 自行定义 | 由 HTML 标准规定 |
| 数据类型 | 文本(除非 Schema 定义了类型) | 字符串、数字、布尔值、null、数组、对象 | 文本 |
| 属性 | 有 | 无 | 有 |
| 注释 | 支持 | 不支持 | 支持 |
| Schema | DTD、XSD | JSON Schema | – |
| 语法错误 | 被解析器拒绝 | 被解析器拒绝 | 由浏览器自动修复 |
JSON 更简短,并且可以直接映射为 JavaScript 对象,因此大多数 Web API 都改用了 JSON。而在文本与标记混排、需要命名空间或必须严格按 Schema 校验的场景中,XML 依然优势明显——这正是税务机关、出版机构和办公文档格式至今仍依赖 XML 的原因。
.xml 文件是什么?XML 文件怎么打开?
.xml 文件是包含 XML 文档的纯文本文件,通常采用 UTF-8 编码。既然是文本,任何文本编辑器都能打开它——Windows 上的记事本、Mac 上的“文本编辑”,或者 VS Code 等代码编辑器。把 XML 文件拖进 Chrome 或 Firefox 浏览器窗口,就会以树形结构显示;Excel 也可以把 XML 数据导入电子表格。
很多文件的扩展名虽然不是 .xml,用的却也是 XML:.svg 图片、.rss 订阅源、.xsd Schema、.xsl 样式表、.NET 中的 .config 文件,以及 macOS 上可以用 XML 格式保存的 .plist 文件。Word、Excel 和 PowerPoint 文件(.docx、.xlsx、.pptx)则是装满 XML 文件的 ZIP 压缩包。
XML 的常见用途
- 网站地图:
sitemap.xml告诉搜索引擎网站有哪些页面。 - RSS 和 Atom 订阅源:新闻网站、博客和播客以 XML 格式发布更新。
- SVG:网页上的矢量图形就是 XML 文档。
- 办公文档:Office Open XML(DOCX、XLSX、PPTX)和 OpenDocument(ODT、ODS)都是由 XML 文件组成的 ZIP 包。
- 电子发票:墨西哥的 CFDI 和巴西的 NF-e 都是 XML 文件,必须经过数字签名和授权才具有法律效力;UBL 则是欧洲及其他地区 Peppol 电子发票背后的 XML 格式。
- SOAP Web 服务:银行、支付服务商和政府系统通过 XML 消息交换数据,消息格式由 WSDL 文件描述。
- Android 应用:布局、字符串资源和
AndroidManifest.xml都用 XML 编写。 - 配置文件:Maven 的
pom.xml、.NET 的web.config,以及许多其他构建和服务器配置。
常见问题
XML 是什么的缩写?
XML 是 Extensible Markup Language(可扩展标记语言)的缩写。“可扩展”指你可以自己定义标签,“标记”指用包裹数据的标签来表示结构。
XML 是编程语言吗?
不是。XML 是一种数据格式:它描述并组织信息,但不能进行任何计算。XPath、XSLT 等相关技术用于查询和转换 XML。
现在还有人用 XML 吗?
当然有。在许多 Web API 中,JSON 已经取代了 XML,但 XML 仍是 sitemap、RSS 订阅源、SVG、办公文档、Android 布局、SOAP 服务以及许多国家电子发票的标准格式。
最后更新: