XML 格式化 / 转 JSON

格式化 XML,并支持 XML 与 JSON 互相转换。

什么是XML 格式化 / 转 JSON?

XML(可扩展标记语言)是一种通过自定义标签描述结构化数据的标记语言,常用于配置文件、SOAP/WebService 接口、RSS/Atom 订阅源、Office 文档内部格式等场景。 本工具支持两个功能:格式化(按标签层级自动缩进换行,压缩去除多余空白)和 XML 转 JSON(把标签树映射为 JSON 对象/数组结构,便于程序或前端直接使用)。

为什么使用XML 格式化 / 转 JSON?

调试老旧接口或第三方 SOAP/XML API 返回的一大段没有换行的原始 XML 时,格式化能让层级关系一目了然,快速定位某个字段。当需要在 JavaScript/前端中使用这些数据时,转成 JSON 比手写 XML 解析代码方便得多。 与单纯的 JSON 格式化工具不同,XML 支持属性(attribute)、命名空间、注释、CDATA、混合内容(标签中夹杂文本),转换为 JSON 时需要约定规则,例如属性通常加 @ 前缀、纯文本节点用 #text 表示,多个同名子标签会被归并为数组。

使用示例

格式化压缩后的 XML

输入 <root><item id="1">苹果</item><item id="2">香蕉</item></root>,格式化后输出带两级缩进的多行 XML,每个 <item> 独占一行,方便阅读层级结构。

XML 转 JSON(带属性)

输入 <user id="7"><name>张三</name></user>,转换结果为 {"user":{"@id":"7","name":"张三"}},属性 id 被映射为 @id 键,子标签 name 映射为普通字段。

多个同名子节点转数组

输入 <list><item>A</item><item>B</item></list>,转换结果中 item 会被识别为数组 {"list":{"item":["A","B"]}},而不是被后一个值覆盖。

使用提示

浏览器本地处理,数据不上传;转换含有大量属性和混合文本内容的复杂 XML(如带样式的富文本片段)时,生成的 JSON 结构可能较为琐碎,建议先看一眼输出结构再决定是否需要额外处理。

常见问题

XML → JSON 是如何映射的?
元素的属性会以 "@属性名" 作为键,文本内容用 "#text"(若元素只有文本则直接作为值),同名子元素会自动合并为数组。
JSON → XML 有什么要求?
JSON 顶层必须是只含一个键的对象(该键即根标签名),子对象同样支持 "@属性名" 与 "#text" 约定,与 XML → JSON 的规则对应。
数据会上传服务器吗?
不会。全部使用浏览器内置 DOMParser 与原生 JS 递归完成,不依赖第三方库,也不发起网络请求。
XML 声明(<?xml version="1.0"?>)和 DOCTYPE 会被处理吗?
格式化会保留 XML 声明并单独成行;转 JSON 时声明和 DOCTYPE 通常不作为数据内容输出,只保留标签内的实际数据结构。
转成 JSON 后能否再转回等价的 XML?
结构上可以还原,但由于 JSON 本身不区分属性顺序、命名空间前缀等 XML 特有语义,反向转换后的 XML 与原文件在字节上可能不完全一致,业务字段和层级是一致的。
中文内容会不会乱码?
工具按 UTF-8 处理文本,正常粘贴的中文标签内容不会乱码;如果原始 XML 文件声明的编码不是 UTF-8(如 GBK),需要先按原编码正确解码文本再粘贴。
很大的 XML 文件会卡顿吗?
格式化和转换都在浏览器内存中进行,文件体积较大(如几十 MB)时可能出现明显延迟,建议先截取需要处理的片段。
数据会上传到服务器吗?
不会,解析和转换均在浏览器本地 JavaScript 中完成,内容不会发送到后端。

相关工具

相关教程

← 返回工具箱· 数据均在浏览器本地处理,不上传服务器。