开发者工具 / 01

XML转JSON转换器

将XML文档转换为易读的JSON,并合理处理属性和重复元素。

XML转JSON转换器: TOEA读取文档中的元素、属性、文本和CDATA,然后将它们整理为JSON:属性前加@,独立文本变为#text,重复的同级名称变为数组。 完全在浏览器中本地运行,文件不会上传到服务器。

使用次数
在浏览器中
费用
免费·无需注册
可用性
可直接使用
XML → JSON工作台本地处理

完全在浏览器中运行

↥
在下方粘贴XML,或选择一个文件

最大5 MB·不会上传

所有内容都会变成文本

XML没有数据类型,因此<count>42</count>会变成"42",<active>true</active>会变成"true"。请在读取JSON的代码中转换数字和布尔值,因为在那里你知道各字段的含义。属性也一样:即使@id看起来是数字,它仍然保存为字符串。

读取结果的代码还必须处理只在部分情况下重复出现的元素。只出现一次的<item>会是对象,出现两次则会是数组,因此循环前请使用Array.isArray(x) ? x : [x]进行规范化。

不适合转换的文档

此转换器适合处理数据,例如配置、API响应、信息源和导出文件,但不适合处理散文。在<p>Read <b>this</b> first</p>中,分散的文本会合并到一个#text值中,而粗体文字会成为单独的键,因此会丢失阅读顺序。XHTML、DocBook及类似的文档格式更适合使用XML库处理。若要在转换前检查文档结构,请使用XML格式化工具进行缩进。

使用方法

  1. 粘贴XML或选择文件。
  2. 选择缩进宽度。
  3. 复制或下载JSON。

隐私与限制

文本会在浏览器中转换,且不会上传;当文件是配置文件或导出数据、你不希望交给陌生人时,这一点很重要。命名空间会在元素名称中按原样保留,而不会解析。

相关工具

常见问题

为什么属性以@开头?

XML会将属性与子元素分开,而JSON没有这种区分。@前缀可以将它们分开,这样无需猜测即可还原转换。

为什么一个元素变成了数组?

重复出现的同级名称总会变成数组,因为这就是该结构表达的含义。只出现一次的名称会保留为普通值。

#text有什么作用?

同时包含文本和子元素的元素需要一个位置来存放独立文本,而#text就是这个位置。

不支持哪些内容?

不支持DTD实体定义、命名空间解析,以及声明之外的处理指令。配置文件和API负载不会使用这些内容。

免费工具·使用在浏览器中次·无需账户