跳到主要内容

格式转换:XML To JSON

使用 xml-js 的 compact 模式将 XML 转换为 JSON:属性放在 _attributes 下,文本放在 _text 下,重复的同级元素变为数组。所有值都保持为字符串。

在编写解析代码前,以 JSON 形式查看 SOAP、RSS 或旧版 XML API 的响应。

XML

适用场景

  • 在编写解析代码前,以 JSON 形式查看 SOAP、RSS 或旧版 XML API 的响应。
  • 从 XML 导出文件中提取属性值和文本,交给基于 JSON 的工具。

使用方法

  1. 将 XML 粘贴到左侧编辑器,或加载 .xml 文件。
  2. 在 JSON 中,从 _attributes 读取属性,从 _text 读取元素文本,从数组读取重复元素。
  3. 复制 JSON,把需要的字段映射到你自己的结构中。

XML 输入

<order id="1042">
  <customer>Ada Lovelace</customer>
  <item sku="A-1">Keyboard</item>
  <item sku="B-7">Mouse</item>
</order>

JSON

{
  "order": {
    "_attributes": {
      "id": "1042"
    },
    "customer": {
      "_text": "Ada Lovelace"
    },
    "item": [
      {
        "_attributes": {
          "sku": "A-1"
        },
        "_text": "Keyboard"
      },
      {
        "_attributes": {
          "sku": "B-7"
        },
        "_text": "Mouse"
      }
    ]
  }
}

功能与限制

转换在浏览器中进行。没有设置项,compact 格式是固定的。

只出现一次的元素是对象,出现两次就变成数组,因此 JSON 结构可能随数据变化。代码中需要同时处理两种情况。

XML 声明、注释和 CDATA 会保留为 _declaration、_comment 和 _cdata。不进行 schema(XSD)或 DTD 校验。

混合内容(文本与标签交错)会丢失原有顺序。

FAQ

数字和布尔值会转换为 JSON 类型吗?

不会。属性值和文本都保持为字符串,例如 "1042"。需要时请在自己的代码中转换类型。

XML 格式有误会怎样?

页面会显示 "Invalid XML" 错误而不是 JSON,例如 "unclosed tag <order>" 或 "Unexpected close tag (line 3, column 8)"。请闭合每个元素、给属性值加引号,并把 & 转义为 &amp;。

能得到不含 _text 和 _attributes 键的 JSON 吗?

本页不行。compact 格式保留这些键,以免属性和文本混淆。复制后请在代码中调整结构。

规范与参考资料