XML to JSON
粘贴 XML 或 JSON,选择结构如何映射,一键转换。解析器保留注释、CDATA 和混合内容,指出每个问题的确切行号,并量化这次转换的代价。
点击「转换」。工作方式
放进来
粘贴、拖入或打开文件:最大 32 MB,支持 UTF-8 与 UTF-16。文件到达时不会自动转换,它会等你。
设定形状
属性前缀、文本键名、单个标签是否成为数组、命名空间、空元素、类型化取值。这些才是下游真正在意的设定。
开始转换
点击「转换」或按 Ctrl+Enter。超过 40 KB 的文档交给 Web Worker,页面不会卡死,保真度指标会告诉你代价。
带走结果
复制、下载,或直接交给套件中的另一个工具。任何时候按住 Alt,就能在结果位置看到原文。
自带解析器,不走 DOM
文档被读入一棵保留注释、CDATA 段、处理指令以及混合内容顺序的树 —— 这些正是绕道 DOM 时被悄悄丢掉的东西。
错误带行号和列号
每个问题都在其发生处报告,解析器不会遇到第一个就停下。点击一条提示,光标直接跳过去。
形状由你决定
属性前缀、文本键名、数组策略、命名空间、类型化取值、空元素。决定 JSON 能不能用的约定,是设置项,不是默认假设。
可以量化的保真度
每次转换都会反向转回并逐节点比对,你拿到的是百分比和确切的差异清单,而不是一句承诺。
内置 XPath 1.0
用浏览器自带的引擎查询文档。找路径、找取值,不必导出到任何地方。
大文档依然顺滑
超过 40 KB 的工作交给 Web Worker。而且打字时什么都不会运行:转换等你按按钮。
不上传任何内容
解析、转换、查询全在这个标签页里完成。没有服务器,没有遥测,文件不离开设备。
交接给套件里的其他工具
把结果直接送到 JSONFlow、DiffSnap、CodeCard 或 Hash Bolt,无需下载再上传。
一个会承认自己丢了什么的转换器
一个把过程摊开给你看的转换器:每个错误的确切行号、决定 JSON 形状的约定,以及往返之后文档还剩下多少。
一切都在这个标签页里运行
解析、转换、XPath 和往返校验全部在浏览器里用普通 JavaScript 执行。超过 40 KB 的文档转入 Web Worker 以保持界面响应,并且不会上传、排队或记录到任何地方。
为真实文档而做
RSS 源、SOAP 信封、Android 字符串资源、.NET 配置文件、站点地图、SVG:带命名空间、CDATA 和注释的真实文档,而不是干净的小例子。保序投影能原样重现,扁平投影会告诉你它压平了什么。
这个工具没有服务端。不需要账号,不上传,不对你的内容做分析。关掉标签页文档就没了,因为它唯一存在过的地方就是本地内存。
常见问题
Q我的数据会被发送到服务器吗?+
不会。解析器、转换器、XPath 引擎和往返校验都在你的浏览器里运行。根本不存在可以接收数据的服务端。
Q属性和文本是怎么处理的?+
属性会带一个前缀(默认 @),元素自身的文本放在文本键下(默认 #text)。两者都可修改,以匹配下游期望的约定;把前缀清空,属性就会与子元素混在一起。
Q为什么只出现一次的元素没有变成数组?+
默认只有标签真的重复时才会出现数组,这样才忠实于文档。如果下游需要稳定的形状,把「数组」设为「始终」,或把那些标签写进「强制数组的标签」。
Q保真度百分比是什么意思?+
结果会被转换回原格式,然后逐节点比对两棵树:元素、属性、文本片段、注释、CDATA 和处理指令。100% 表示没有任何丢失;低于 100% 会列出确切的差异。
Q能保留注释、CDATA 和混合内容吗?+
可以。打开「保留注释」和「保留 CDATA」,对于文本与元素顺序有意义的文档(例如 XHTML 片段)选择「保序」数组策略。只有保序投影能让混合内容以 100% 往返。
Q最大能转换多大的文件?+
最大 32 MB,支持 UTF-8 和 UTF-16。超过约 40 KB 的工作会移到 Web Worker,因此几兆字节的文档也不会卡住页面。这个工具唯一不做的事,就是在你打字时自动转换。