Skip to content
data2026-07-253 分钟阅读

什么是 XML 和 JSON

XML(eXtensible Markup Language,可扩展标记语言)是一种用于标记数据的标记语言,支持属性和命名空间。

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,使用键值对表示数据。

对比示例

XML:

<user id="1">
  <name>张三</name>
  <email>zhang@example.com</email>
  <tags>
    <tag>developer</tag>
    <tag>admin</tag>
  </tags>
</user>

JSON:

{
  "user": {
    "@id": "1",
    "name": "张三",
    "email": "zhang@example.com",
    "tags": {
      "tag": ["developer", "admin"]
    }
  }
}

XML vs JSON 对比

| 特性 | XML | JSON | |------|-----|------| | 可读性 | 中等 | 高 | | 文件大小 | 大(标签冗余) | 小 | | 数据类型 | ❌ 全为字符串 | ✅ 多种类型 | | 属性支持 | ✅ 原生支持 | ⚠️ 需约定 | | 命名空间 | ✅ 支持 | ❌ 不支持 | | 注释 | ✅ 支持 | ❌ 不支持 | | Schema 验证 | ✅ XSD | ✅ JSON Schema | | Web 标准 | 传统标准 | 现代标准 |

为什么需要 XML/JSON 转换

  1. Web 服务迁移:SOAP(XML)→ REST(JSON)API 升级
  2. 配置文件转换:旧系统 XML 配置 → 新系统 JSON 配置
  3. 数据集成:不同系统使用不同数据格式
  4. RSS/Atom 解析:RSS Feed(XML)→ JSON 处理
  5. Office 文档:.docx/.xlsx 本质是 XML,需要转换为 JSON
  6. 遗留系统对接:新系统对接使用 XML 的旧系统

常见转换挑战

| 挑战 | 说明 | 解决方案 | |------|------|---------| | 属性 vs 子元素 | XML 属性在 JSON 中没有标准表示 | 使用 @attr 前缀 | | 重复元素 | XML 可重复元素名 | JSON 转为数组 | | 文本内容 | XML 混合内容 | 使用 #text 键 | | 命名空间 | XML 命名空间前缀 | JSON 中使用完整 URI | | 空元素 | <tag/> | JSON 中使用 null 或空字符串 |

如何使用在线工具

使用 DevToolkit Pro 的 XML/JSON 转换器

  1. 粘贴 XML 或 JSON 数据
  2. 工具自动检测格式并转换
  3. 支持属性、命名空间等复杂结构
  4. 实时预览转换结果
  5. 处理大文件时支持流式转换

代码中的转换

JavaScript

const xml2js = require('xml2js');
const { XMLBuilder, XMLParser } = require('fast-xml-parser');

// XML → JSON
const parser = new XMLBuilder({ ignoreAttributes: false, attributeNamePrefix: '@_' });
const xml = '<user id="1"><name>张三</name></user>';
const builder = new XMLBuilder();
const json = parser.parse(xml);

// JSON → XML
const xmlBuilder = new xml2js.Builder();
const xmlStr = xmlBuilder.buildObject({ user: { name: '张三' } });

Python

import xmltodict
import json

# XML → JSON
xml_str = '<user id="1"><name>张三</name></user>'
data = xmltodict.parse(xml_str)
json_str = json.dumps(data, ensure_ascii=False, indent=2)

# JSON → XML
data = {"user": {"name": "张三"}}
xml_str = xmltodict.unparse(data, pretty=True)

FAQ

XML 属性怎么转换为 JSON?

没有标准转换方式。常见约定:使用 @ 前缀表示属性(如 @id),使用 #text 表示文本内容。不同工具的约定可能不同。

JSON 转 XML 会丢失信息吗?

可能。JSON 的某些特性 XML 不支持:数组(需要约定元素名)、无类型(XML 全为字符串)。转换前需要了解目标格式的限制。

什么时候用 XML,什么时候用 JSON?

使用 XML:需要命名空间、Schema 严格验证、文档混合内容(如 XHTML)。使用 JSON:Web API、配置文件、前后端数据交换。现代项目优先选择 JSON。


本文由 DevToolkit Pro 提供。更多开发者工具请访问 首页


ad