XML 与 JSON 互转指南:配置文件与 API 数据格式转换

JSON(更新于 2026年6月19日)

XML 与 JSON 的核心差异

特性 XML JSON
数据格式 标签标记 键值对
属性 有(<node attr="val"> 无(属性转为字段)
命名空间 有(xmlns
注释 有(<!-- -->
数组表示 隐式(同名元素重复) 显式([]
文本节点 混合内容(标签+文本) 纯字符串值

XML 更适合文档型数据(SVG、HTML、配置),JSON 更适合结构化数据(API 响应)。


XML 属性如何映射到 JSON

XML 元素可以同时有属性和文本内容,这是转换的难点:

简单元素

<person name="张三" age="30"/>
{
  "person": {
    "@name": "张三",
    "@age": "30"
  }
}

约定用 @ 前缀表示 XML 属性,这是最常见的转换规则。

混合内容(属性 + 文本)

<price currency="CNY">68.00</price>
{
  "price": {
    "@currency": "CNY",
    "#text": "68.00"
  }
}

#text 表示元素的文本内容,与属性区分。


数组检测:最容易踩的坑

XML 中数组是隐式的——同名元素重复出现就是数组:

<books>
  <book>三体</book>
  <book>活着</book>
</books>
{
  "books": {
    "book": ["三体", "活着"]
  }
}

问题:只有一个元素时,XML 看不出是数组:

<books>
  <book>三体</book>
</books>

可能转为:

{
  "books": {
    "book": "三体"
  }
}

解决:使用 XML↔JSON 工具 时,勾选「强制数组」选项,指定哪些元素始终作为数组处理。


命名空间处理

XML 命名空间在 JSON 中没有直接对应:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
  <soap:Body>
    <m:GetPrice xmlns:m="http://example.com">
      <m:Item>123</m:Item>
    </m:GetPrice>
  </soap:Body>
</soap:Envelope>

常见处理策略:

策略 说明 适用场景
保留前缀 soap:Body"soap:Body" SOAP/WSDL 处理
去除前缀 soap:Body"Body" 简单场景,无冲突
使用命名空间键 {soap}Body 需要区分同名的不同命名空间

使用 XML 格式化工具 先整理 XML,再进行转换。


使用 XML↔JSON 工具

第一步:打开工具

访问 XML↔JSON 工具,选择转换方向。

第二步:输入源数据

  • XML → JSON:粘贴 XML 字符串
  • JSON → XML:粘贴 JSON 字符串

可先用 JSON 格式化XML 格式化 整理输入。

第三步:配置转换选项

选项 说明
属性前缀 属性映射为 @attr 还是 $attr
文本节点键 文本内容映射为 #text 还是 _text
强制数组 指定始终作为数组的元素名
命名空间 保留/去除/转换

第四步:执行转换

点击「转换」,查看结果并复制。


实战场景

配置文件迁移

许多旧项目使用 XML 配置(Spring、Maven),新项目倾向 YAML/JSON:

pom.xml → package.json(依赖信息)
spring-config.xml → application.json(Bean 配置)

SOAP API 转 REST

SOAP 响应是 XML,需要转为 JSON 供前端使用:

SOAP XML 响应 → JSON → 前端渲染

SVG 元数据提取

SVG 是 XML 格式,提取元数据转为 JSON 便于程序处理:

<svg width="100" height="100"> → {"svg": {"@width": "100", "@height": "100"}}

JSON 转 XML 注意事项

JSON 转 XML 时需要注意:

注意点 说明
根元素 JSON 必须有唯一的根键
键名合法性 XML 标签名不能以数字开头,不能含空格
数组包装 JSON 数组需要指定包装元素名
特殊字符 <>& 需要转义为实体

常见问题

问题 原因 解决
单元素未转为数组 XML 无法区分单元素和数组 勾选「强制数组」
属性丢失 转换规则未配置属性前缀 检查属性前缀设置
命名空间冲突 不同命名空间有同名元素 保留命名空间前缀
JSON 转报错 键名不合法 修改键名符合 XML 规范
混合内容丢失 文本节点键未正确映射 检查 #text 配置

总结

XML 与 JSON 互转是数据格式迁移和 API 集成中的常见需求。理解属性映射、数组检测、命名空间三大核心问题,是正确完成转换的关键。XML↔JSON 工具 提供灵活的转换配置,配合 JSON 格式化XML 格式化 构建完整的格式转换工作流。

#XML#JSON#格式转换#API#配置