XML(Extensible Markup Language,可扩展标记语言)是一种用于存储、传输和交换数据的标记语言,由万维网联盟(W3C)在1998年制定。它通过自定义标签描述数据结构,具有平台无关性、自描述性和结构化的特点,常用于配置文件、数据交互和文档存储等场景。
一、XML的核心特点
-
自定义标签
XML标签不像HTML(预定义标签,如
<div>
、<p>
),而是允许用户根据需求自定义标签(如<book>
、<price>
),标签需成对出现(开始标签和结束标签),例如:xml<book> <title>XML入门</title> <author>张三</author> </book>
-
严格的语法规则
- 标签必须正确嵌套、闭合,且区分大小写。
- 文档必须有一个根元素(唯一的顶级标签)。
- 属性值必须用引号包裹(单引号或双引号)。
-
自描述性
标签和属性直接描述数据含义,可读性强,例如:
xml<user id="1001"> <name>Alice</name> <email>[email protected]</email> </user>
-
平台无关性
不依赖特定编程语言或操作系统,可在不同系统间交换数据。
二、XML的基本结构
一个标准的XML文档包含以下部分:
-
声明(可选)
用于指定XML版本和编码(如UTF-8),例如:
xml<?xml version="1.0" encoding="UTF-8"?>
-
元素(标签)
由开始标签、内容和结束标签组成,可嵌套其他元素或文本:
xml<root> <child>内容</child> <child attribute="值">带属性的元素</child> </root>
-
属性
用于描述元素的额外信息,需附加在开始标签中,格式为
属性名="属性值"
:xml<product id="001" category="book">XML教程</product>
-
注释
语法为
<!-- 注释内容 -->
,用于解释文档结构:xml<!-- 这是一个注释 -->
三、XML的常见用途
-
数据存储与配置
- 作为配置文件(如Java的
web.xml
、Android的strings.xml
)。 - 存储结构化数据(如电子书、日志文件)。
- 作为配置文件(如Java的
-
数据交换
- 早期Web服务(SOAP协议)通过XML传输数据。
- 不同系统间的数据交互(如企业系统集成)。
-
文档标记
- 用于学术论文、法律文档等需要复杂结构的场景(如DocBook格式基于XML)。
四、XML vs JSON
特性 | XML | JSON |
---|---|---|
语法 | 标签驱动,结构复杂 | 键值对驱动,简洁轻量 |
可读性 | 较好(标签自描述) | 较好(简洁格式) |
解析效率 | 较慢(需处理标签嵌套) | 较快(键值对映射简单) |
体积 | 较大(标签重复书写) | 较小(无冗余标签) |
主流场景 | 传统企业系统、配置文件 | Web API、移动端数据交互 |
五、XML解析方式(前端JS中)
在浏览器中,可通过DOMParser
或XMLHttpRequest
解析XML数据:
-
解析XML字符串
javascriptconst xmlString = `<?xml version="1.0"?> <users> <user id="1">Alice</user> <user id="2">Bob</user> </users>`; const parser = new DOMParser(); const xmlDoc = parser.parseFromString(xmlString, "application/xml"); const users = xmlDoc.getElementsByTagName("user"); for (const user of users) { console.log(user.getAttribute("id"), user.textContent); }
-
通过XHR获取XML
javascriptconst xhr = new XMLHttpRequest(); xhr.open("GET", "data.xml", true); xhr.onreadystatechange = function() { if (xhr.readyState === 4 && xhr.status === 200) { const xmlDoc = xhr.responseXML; // 解析xmlDoc } }; xhr.send();
六、XML的优缺点
- 优点
- 结构严谨,适合复杂数据建模。
- 支持命名空间(Namespace)和模式定义(XSD、DTD),便于规范数据格式。
- 缺点
- 语法冗长,书写和解析效率较低。
- 数据类型支持有限(默认均为字符串),需额外定义。
总结
XML是一种灵活的结构化数据格式,通过自定义标签描述数据,适用于需要严格规范和跨平台交互的场景。尽管现代Web开发中JSON更流行,但XML在传统企业系统、配置文件和特定领域(如SVG、XHTML
)中仍有重要作用。理解XML的核心语法和用途,有助于掌握早期Web技术和数据交换的基础知识。