OpenReplay Logo
12k
12k

XML ⇄ JSON 转换器

在浏览器本地完成 XML 与 JSON 的互相转换——自动为你处理属性、重复元素、CDATA 和混合内容。

本地处理

关于此工具

XML 和 JSON 是结构化数据中最主流的两种文本格式,但它们对应着不同的数据结构:XML 承载元素、属性、混合文本和 CDATA,而 JSON 拥有对象、数组和有类型的基本值。这个转换器使用自带的分词器解析 XML(不依赖 DOMParser),并应用一套可预测的映射规则——属性变成 "@name" 键,纯文本元素变成字符串值,重复的同级元素合并为数组,而同时带有属性或子元素以及文本的元素会把这段文本保存在 "#text" 键下。CDATA 被当作文本读取;注释和 XML 声明会被丢弃。JSON → XML 方向以相反顺序应用相同的规则,对文本和属性值进行转义,并以两个空格缩进。

用它把遗留的 SOAP 或 RSS 载荷喂给只接受 JSON 的 API,把一份密集的 XML 配置查看为可浏览的对象树,或者对文档做一次往返转换以确认其结构是否完好保留。“自动推断值类型”选项会把像 "42"、"true" 和 "null" 这样的完整字符串匹配转换成真正的 JSON 数字、布尔值和 null,使下游代码无需再次解析字符串——当你需要让每个叶子都保持为字符串时,将其关闭。在 JSON → XML 模式下,可设置当 JSON 不是单键对象时所使用的根元素名称。

两个方向的转换都完全在你的浏览器中运行——任何 XML 或 JSON 都不会被上传到服务器。

常见问题

XML 属性在 JSON 输出中是如何表示的?

每个属性都会成为元素对象上以 "@" 为前缀的键——例如 <book id="42"> 会变成 {"book": {"@id": 42}}。把 JSON 转换回 XML 时,任何以 "@" 为前缀的键都会重新变回属性。

重复的 XML 元素和混合文本内容会如何处理?

共享同一标签名的同级元素会被归入一个 JSON 数组。当某个元素除自身文本外还带有属性或子元素时,这段文本会被存放在 "#text" 键下,以确保不丢失任何内容。

转换器能处理 CDATA、注释和 XML 声明吗?

CDATA 区段会被当作纯文本读取并合并到元素的值中。注释和 <?xml ... ?> 声明会被丢弃,因为两者都不承载能够干净地映射到 JSON 的数据。