JSON 转 XML 转换工具

将 JSON 数据一键转换为 XML 文档,支持根节点名、数组项名、属性风格、CDATA 包裹、XML 声明、缩进等配置,自动转义特殊字符,well-formed 校验。适用于 SOAP 服务对接、SVG 生成、Office 文档、Android 资源、旧系统配置等场景,所有数据在浏览器本地处理。

转换选项
XML 输出
<?xml version="1.0" encoding="UTF-8"?>
<root>
  <name>开发者工具箱</name>
  <version>1.0.0</version>
  <active>true</active>
  <score>95</score>
  <tags>
    <item>前端</item>
    <item>工具</item>
    <item>零依赖</item>
  </tags>
  <author>
    <name>Aether</name>
    <email>aether@example.com</email>
  </author>
  <features>
    <item>
      <name>JSON 格式化</name>
      <enabled>true</enabled>
    </item>
    <item>
      <name>Base64 编码</name>
      <enabled>true</enabled>
    </item>
  </features>
  <description>支持 &lt;特殊&gt; 字符 &amp; 转义</description>
  <note/>
</root>
well-formed 校验通过
元素 19 · 属性 0 · 文本节点 14 · 最大深度 3

常见问题

1. JSON 转 XML 有哪些常见应用场景?

尽管 JSON 已成为现代 Web API 的事实标准,XML 在以下场景仍是必需格式:

  • SOAP Web Service:传统企业级服务(如银行、保险、SAP)的请求与响应均为 XML
  • SVG 图形:可缩放矢量图形本质是 XML,从 JSON 生成 SVG 是常见需求
  • Office 文档:docx / xlsx / pptx 内部均为 XML(Office Open XML 标准)
  • Android 资源:布局文件 strings.xml / styles.xml / layout 均为 XML
  • 配置文件:Java Spring、.NET WebService、Maven pom.xml 等旧系统配置
  • Atom / RSS Feed:订阅源仍以 XML 为主
  • 导出与归档:PDF 表单、税务申报、电子发票等结构化文档
2. JSON 数组如何转换为 XML?

JSON 数组会展开为多个同名元素。数组项的标签名由「数组项名」选项控制(默认 item)。例如:

{"tags": ["前端", "工具"]}

转换为:

<tags>
  <item>前端</item>
  <item>工具</item>
</tags>

可在选项中把「数组项名」改为更具语义的名称(如 taglientry)。

3. JSON 的 key 含非法字符(空格、数字开头)怎么办?

XML 标签名有严格规则:必须以字母或下划线开头,只能包含字母、数字、连字符、下划线、点号,且不能以 xml(任意大小写)开头。本工具会自动修正非法标签名:

  • 数字开头 → 加下划线前缀(如 123_123
  • 含空格或特殊字符 → 替换为下划线(如 "a b"a_b
  • 以 xml 开头 → 加下划线前缀
  • 完全无法修正 → 退化使用数组项名作为标签

修正会在警告区提示具体变更,便于核对。

4. 「扁平对象用属性」选项有什么作用?

默认情况下,对象的字段都转为子元素:

<user>
  <name>Aether</name>
  <age>18</age>
</user>

开启「扁平对象用属性」后,若对象的所有字段都是基本类型(字符串 / 数字 / 布尔 / null),会转为属性形式,更紧凑:

<user name="Aether" age="18"/>

属性模式适合扁平的元数据对象。嵌套对象仍保持子元素结构,不会被强制转为属性。

5. CDATA 与字符转义有什么区别?

XML 文本节点中出现 <>& 必须处理,否则会破坏文档结构。两种处理方式:

  • 字符转义(默认):替换为实体,如 <&lt;。通用、兼容性最好,但长文本可读性差
  • CDATA 包裹:用 <![CDATA[...]]> 包裹,内容原样保留。适合含大量特殊字符的长文本(如 HTML 片段、代码、正则)

开启「特殊字符用 CDATA」后,含 <>& 的文本会自动用 CDATA 包裹。工具会处理 CDATA 中 ]]> 分隔符冲突,自动拆分为多段。

6. JSON 的 null 如何表示为 XML?

JSON 有 null,XML 没有原生的 null 概念。两种表示方式:

  • 默认(空元素)<note/><note></note>,简洁但无法区分「null」与「空字符串」
  • xsi:nil<note xsi:nil="true"/>,遵循 XML Schema 规范,明确标记为 null,根节点自动注入 xmlns:xsi 命名空间

对接 XML Schema 校验的系统建议开启 xsi:nil 模式,普通场景空元素即可。

7. XML 声明 <?xml?> 的作用是什么?

XML 声明位于文档首行,格式 <?xml version="1.0" encoding="UTF-8"?>,包含:

  • version:XML 版本(1.0 最常用,1.1 极少用)
  • encoding:字符编码,UTF-8 是现代默认值
  • standalone(可选):是否依赖外部 DTD,yes / no

XML 规范不强制要求声明,但多数解析器推荐包含。SOAP、Office 文档、Android 资源等场景要求必须有声明。可在选项中关闭。

8. well-formed 校验检查什么?

well-formed(良构)是 XML 文档的最低合规要求,校验包括:

  • 有且仅有一个根元素
  • 所有开始标签都有对应的结束标签
  • 标签嵌套正确(不允许交叉嵌套,如 <a><b></a></b> 非法)
  • 属性值用引号包裹
  • 文本节点中无未转义的 <&
  • 标签名符合命名规则

注意:well-formed 不等于 valid(有效)。valid 还需通过 DTD 或 XML Schema 校验语义约束。本工具保证生成结果 well-formed,并提供校验提示。

9. 与 CSV / JSON 互转、YAML 格式化工具有什么区别?
  • CSV / JSON 互转(/csv-json):CSV ↔ JSON 双向转换,面向表格数据(带表头、扁平结构)
  • YAML 格式化(/yaml):YAML ↔ JSON 双向转换与格式化,面向配置文件
  • 本工具(/json-to-xml):JSON → XML 单向导出,面向 SOAP / SVG / Office / 旧系统对接

三者互补:表格数据用 CSV 工具,配置文件用 YAML 工具,对接 XML 系统用本工具。需要反向转换(XML → JSON)可借助浏览器 DOMParser 自行实现。

10. 数据会上传到服务器吗?

不会。所有转换在浏览器本地完成,不发起任何网络请求。本工具基于纯原生 TypeScript 实现,无第三方依赖,数据不会离开你的设备。适合处理敏感配置、密钥、个人信息等不可外泄的数据。