XML与JSON对比
比较 XML 和 JSON 两种数据格式的语法、特点和使用场景
问题
XML 和 JSON 有什么区别?各自适合什么场景?
解答
语法对比
XML 格式:
<?xml version="1.0" encoding="UTF-8"?>
<user>
<name>张三</name>
<age>25</age>
<skills>
<skill>JavaScript</skill>
<skill>CSS</skill>
</skills>
<active>true</active>
</user>
JSON 格式:
{
"name": "张三",
"age": 25,
"skills": ["JavaScript", "CSS"],
"active": true
}
主要区别
| 特性 | XML | JSON |
|---|---|---|
| 数据体积 | 较大(标签冗余) | 较小 |
| 可读性 | 标签语义化 | 简洁直观 |
| 解析方式 | DOM/SAX 解析 | JSON.parse() |
| 数据类型 | 全是字符串 | 支持多种类型 |
| 注释支持 | 支持 | 不支持 |
| 命名空间 | 支持 | 不支持 |
JavaScript 中的解析
// JSON 解析 - 简单直接
const jsonStr = '{"name": "张三", "age": 25}';
const jsonData = JSON.parse(jsonStr);
console.log(jsonData.name); // 张三
// JSON 序列化
const obj = { name: "李四", age: 30 };
const str = JSON.stringify(obj);
console.log(str); // {"name":"李四","age":30}
// XML 解析 - 需要 DOM 操作
const xmlStr = '<user><name>张三</name><age>25</age></user>';
const parser = new DOMParser();
const xmlDoc = parser.parseFromString(xmlStr, 'text/xml');
const name = xmlDoc.querySelector('name').textContent;
console.log(name); // 张三
使用场景
JSON 适合:
- 前后端 API 数据交互
- 配置文件(package.json、tsconfig.json)
- 本地存储(localStorage)
- NoSQL 数据库
XML 适合:
- 需要复杂文档结构(如 Office 文档)
- 需要数据校验(配合 DTD/XSD)
- SOAP Web 服务
- RSS/Atom 订阅源
- SVG 图形
关键点
- JSON 体积小、解析快,是前端数据交互的首选
- XML 标签冗余但语义化强,适合复杂文档
- JSON 原生支持数字、布尔、数组等类型,XML 全是字符串
- JSON 用
JSON.parse()/JSON.stringify(),XML 用 DOMParser - 现代 Web 开发中 JSON 占主导,XML 主要用于特定领域
目录