XML ↔ JSON 转换器 🔒 您的数据不会离开您的浏览器。

在浏览器中直接把 XML 转换成 JSON,或反向转换。

属性变为 @键 · 重复标签变为数组

Ctrl+S下载

关于此工具

XML 常见于 SOAP API、RSS/Atom 订阅源、Android 布局文件,以及大量遗留的企业系统,而 JSON 则是现代的默认选择。本转换器架起两者的桥梁:属性变为 @name 键,与属性同时存在的文本节点变为 #text,同一父节点下重复出现的标签变为 JSON 数组——这与常见的 XML 转 JSON 库采用的约定相同,因此输出结果看起来很熟悉。

转换通过浏览器内置的 DOMParser 完成——不下载任何 XML 库,也不会把数据上传到任何地方。反向转换时,以 @ 开头的 JSON 键变为属性,数组变为重复的同级标签,因此谨慎的往返转换能保留您的结构。

常见问题

转换后的 JSON 中 @ 前缀和数组到底表示什么?

XML 属性会被转换成带 @ 前缀的 JSON 键(例如 `<item id="1">` 变为 `{"@id": "1"}`),而在同一父节点下重复出现的标签会变成 JSON 数组,而不是相互覆盖——这就是为什么 `<item>Milk</item><item>Eggs</item>` 会变成 `["Milk", "Eggs"]`。

这个工具能理解 XML 命名空间、CDATA 段、注释或处理指令吗?

只能部分理解。带命名空间前缀的标签会保留原始前缀(如 `ns:tag`),而不会解析出命名空间 URI;CDATA 内容会被当作纯文本读取;注释和处理指令则会被完全丢弃。这是一个面向典型配置和数据文件的实用转换器,而非完整的 XML 规范实现——如果您的 XML 依赖命名空间或 DTD 来保证正确性,请不要使用它。

如果我把 XML 转成 JSON 再转回 XML,能得到完全相同的文档吗?

很接近,但不是逐字节相同。元素和属性的顺序与值可以正确往返,但原始注释、CDATA 包装、自闭合标签的写法以及标签之间的确切空白不会被保留——输出在语义上是等价的,而不是逐字符相同的副本。

使用此工具时,我的 XML 或 JSON 会被上传到什么地方吗?

不会。解析使用的是您浏览器内置的 DOMParser 和 JSON.parse——两者都完全在您的设备上运行。您在这里粘贴或拖入的任何内容都不会被发送到服务器。

我该如何把 JSON 数组转换回重复的 XML 标签?

给数组所在的父对象一个键,其值是 JSON 数组——例如 `{"item": ["Milk", "Eggs"]}`——切换到 JSON → XML 模式后,数组中的每个元素都会生成一个 `<item>` 元素。如果您的 JSON 顶层是数组或含有多个键,请使用"根元素名称"字段,因为 XML 需要单一的根标签。