JSON 转 XML
把 JSON 转换成 XML:可配置根节点名、数组包裹方式、属性前缀(@)与文本节点(#text),支持缩进、XML 声明与 CDATA,并自动转义特殊字符。
浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。
JSON
转换选项
根节点是数组时始终用「数组元素名」包裹,保证只有一个根元素。
数组写法
XML 结果
这个工具能做什么
- 给只认 XML 的老系统(SOAP 接口、银行/政务对接、配置文件)喂数据时,把 JSON 转成结构化的 XML 请求体。
- JSON 里用 @id 这种键表示 XML 属性、用 #text 表示节点文本,转换时会还原成 id="7" 的属性和节点内容。
- 根节点是数组时自动用数组元素名包裹一层,保证输出永远只有一个根元素,否则 XML 解析器会直接报错。
- 文本里的 <、>、& 自动转义,含特殊字符的内容可以选 CDATA 包裹,避免手工处理转义。
示例
输入
{"name":"Tom","tags":["a","b"]}输出
<root>
<name>Tom</name>
<tags>
<item>a</item>
<item>b</item>
</tags>
</root>
默认根节点名 root、数组元素名 item、缩进 2 空格;数组用 <item> 包裹,也可以在选项里改成重复父元素名。
常见问题
JSON 里的 @ 和 #text 是什么约定?
这是 JSON↔XML 转换的常见约定:键以 @ 开头表示 XML 属性(@id 变成 id="7"),键等于 #text 表示节点的文本内容。前缀和文本键名都可以在选项里改,清空属性前缀就会把所有键都当子元素处理。
数组用 <item> 包裹和重复父元素名有什么区别?
「用 <item> 包裹」生成 <tags><item>a</item></tags>,结构清晰但多一层;「重复父元素名」生成 <tag>a</tag><tag>b</tag>,更贴近某些 XML 方言的习惯。根节点处的数组无论选哪种都会用数组元素名包裹,保证只有一个根元素。
为什么输出的文本被转义了?
XML 里 <、>、& 是保留字符,出现在文本中必须写成 <、>、&,否则文档非法。如果内容本身包含大量标记、不想转义,就勾选 CDATA,输出会包成 <![CDATA[...]]>。
JSON 的键含空格或中文能当元素名吗?
不能。XML 元素名只允许字母、数字、下划线、点、连字符,非法字符会被替换成 -;以数字、点或连字符开头时会补上元素名前缀。生成的元素名一定合法,但可能与原键名不完全一致,反解时需要注意。
我的 JSON 会被上传吗?
不会。转换全部在浏览器本地完成,不发网络请求,断网可用。
关键词:json to xmljson xml 转换xml转换converterattribute#textcdata数据格式