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
}

主要区别

特性XMLJSON
数据体积较大(标签冗余)较小
可读性标签语义化简洁直观
解析方式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 主要用于特定领域