免费XML转JSON转换器

即时将XML转换为JSON。支持属性、嵌套元素和文本节点。完全在您的浏览器中运行。

您的数据从未离开设备
将XML文件拖放到此处 或点击浏览 (最大5 MB)

什么是XML?

XML(可扩展标记语言)是一种用于存储和传输数据的格式。它使用自定义标签来描述数据结构,使其人类可读且广泛受支持。与JSON不同,XML可以在元素上包含属性。

为什么要将XML转换为JSON?

常见问题

XML属性是如何处理的?

XML属性被转换为带有@前缀的JSON属性(例如@id、@href)。这在JSON结构中保留了属性信息。

命名空间怎么处理?

命名空间会在输出中保留。前缀会包含在元素名称中(例如“ns:element”)。

可以将JSON反转为XML吗?

此工具将XML转换为JSON。反向转换请使用我们的JSON转XML转换器。

两种格式,三十年的间隔

XML 1.0于1998年2月10日成为W3C推荐标准。最初的编辑者是Tim Bray(Textuality / Netscape)、Jean Paoli(微软)和C. M. Sperberg-McQueen(伊利诺伊大学芝加哥分校);工作组由Sun微系统公司的Jon Bosak主持。XML的血统可追溯至SGML(ISO 8879:1986),这一文档标记标准本身源自IBM于1970年代的GML。SGML功能强大但令人望而生畏;XML的设计目标是「设计一个SGML的精简版」,删减可选特性,使其可以用几千行代码实现,同时保留Unicode、命名空间和富属性文档。

JSON(JavaScript对象表示法)是被发现的,而非设计出来的。Douglas Crockford和Chip Morningstar于2001年4月在State Software发送了第一条JSON消息,该格式源自JavaScript的对象字面量语法。Crockford于2002年注册了json.org并发布了一页规范。该格式于2006年7月首次被正式化为RFC 4627,2014年重新发布为RFC 7159,2017年12月稳定为RFC 8259 / STD 90,同年ECMA国际发布了ECMA-404。JSON的设计意图(根据Crockford的回顾):极简、语言无关、易于生成和解析、没有版本号(「没有版本号」),以及故意不支持注释(「我删除了注释,因为我发现人们在用它们存储解析指令」)。

JSON在2000年代末随着REST取代SOAP、XMLHttpRequest让位于fetch over JSON而占据Web API主导地位。到2015年,JSON已成为几乎所有公共API的默认响应格式;XML在长尾企业SOA、文档格式(Office Open XML、OpenDocument)以及受标准约束的细分领域中幸存下来。

XML与JSON的区别

XMLJSON
属性原生支持(<item id="5"/>无属性,所有内容均为键/值对
命名空间原生支持(xmlns:prefix="uri"扁平名称;前缀冲突由应用程序处理
注释<!-- … -->规范中无此概念
混合内容原生支持(<p>text <b>and</b> markup</p>处理笨拙,需要数组或字符串化
模式DTD, XSD 1.0 (2001) / 1.1 (2012), RELAX NG, SchematronJSON Schema(社区规范,草案 2020-12)
顺序元素顺序在规范中有意义对象键顺序无保证(大多数解析器在实践中保留插入顺序);数组是有序的
数字在模式类型化之前均为字符串IEEE 754 双精度浮点;规范层面不区分整数/浮点数
冗余程度高(每个值都用标签包裹低)仅使用标点符号

为何XML→JSON本质上是有损的

不存在W3C认可的XML到JSON规范映射。每个转换器都必须对XML能表达但JSON没有原生词汇的问题自行作答。反复出现的决策点:

适合使用此工具的场景

现代替代方案

更多问题

为何相同的XML在不同工具中产生不同的JSON结构?

因为不存在规范的XML→JSON映射。每个转换器选择一种约定(BadgerFish、Parker、JsonML、GData风格),生成的JSON结构在属性标记方式、混合内容保留方式和重复子元素数组化方式上各不相同。通过不同转换器对XML进行往返转换会产生不同的JSON;通过不同转换器将JSON往返转换回XML可能改变属性位置甚至元素顺序。为了互操作性,请记录您使用的约定并坚持使用。

CDATA节、注释和处理指令怎么处理?

CDATA节(<![CDATA[…]]>)被展平为纯字符串内容,包装器消失,但其中的文本被原样保留。XML注释(<!-- … -->)和处理指令(<?xml-stylesheet …?>)被丢弃,因为JSON对两者都没有语法。如果您需要保留注释的往返保真度,纯XML往返才是正确方式。

我的XML模式(XSD)在转换后还能保留吗?

不能。XSD描述XML结构和类型;JSON Schema是JSON的类似(独立)标准。某些高级工具可以将XSD转换为JSON Schema,但这是有损操作,XSD具有JSON Schema没有对应等效项的特性(混合内容、替换组、派生类型)。对于重要的文档验证,请对原始XML运行XSD,而不是对JSON转换运行。

为何JSON在Web API中胜出?

几个原因。JSON直接映射到JavaScript对象,因此浏览器端解析只需一次JSON.parse()调用。格式更小,没有闭合标签,没有命名空间声明,没有模式包袱。REST在2000年代末取代了大多数公共API的SOAP,而JSON是REST的天然载荷。XML的优势(严格模式、命名空间、混合内容)对文档和遗留企业系统很重要,但对于「给我用户对象」这类请求很少有用。Web针对更简单的情况进行了优化。

有任何内容会发送到服务器吗?

不会。XML由浏览器原生的DOMParser解析,然后在JavaScript中递归遍历以构建JSON输出。粘贴的XML从不离开页面。该工具在加载后可离线工作,这在源XML包含内部API端点、客户数据或您不愿上传到任何地方的专有模式时尤为重要。

相关工具