📄 输入 XML / JSON 内容

支持 XML 属性、同名元素、注释、<![CDATA[]]> 与自闭合标签;标签未闭合会直接报错。

所有处理都在你的浏览器本地完成,内容不会上传。「⇅ 结果回填」会把输出放回输入框:XML ⇄ JSON 时自动切换方向,美化/压缩时可接着做相反操作。

输出字符数
0字符
选择功能后点「开始处理」
输入字符 0
输出字符 0
标签数 0
处理结果将显示在这里。

📊 XML 转 JSON 的字段约定

XML 有属性、文本、重复元素等 JSON 原生没有的概念,按下表约定转换。

XML 写法转成的 JSON说明
<name>张三</name>"name": "张三"纯文本元素直接变成字符串
<user id="1">"@id": "1"属性统一加 @ 前缀,值都是字符串
<t>a</t><t>b</t>"t": ["a", "b"]同名子元素出现多次才聚合成数组,单个不包数组
<p>开头<b>加粗</b>结尾</p>"#text": "开头结尾", "b": "加粗"文本与子元素混排时,文本合并到 #text
<nil/>"nil": ""空元素转成空字符串;JSON 的 null 转 XML 时输出自闭合标签
<![CDATA[原文]]>作为元素文本CDATA 里的 <、& 不转义,按原文读取

⚠️ 使用注意

XML 与 JSON 并非完全对等,以下差异需要留意。

问题说明
属性值都是字符串XML 没有 JSON 的数字、布尔类型,<age>18</age> 转 JSON 得到的是字符串 "18" 而非数字 18,需要类型请自行转换。
JSON 键名要能做 XML 标签JSON → XML 时键名只能含字母、数字、下划线、点和连字符且不能以数字开头;非法字符会替换成 _(如 "a b" → <a_b>,"1x" → <_1x>),特殊字符文本会做 &lt;&gt;&amp; 转义。
注释与 DOCTYPE美化与压缩会保留 <!-- 注释 -->、<?xml?> 声明与 DOCTYPE;但转成 JSON 时注释不属于数据,会被丢弃。
先校验再输出美化、压缩、转 JSON 前会用浏览器 XML 解析器校验:标签未闭合、引号缺失等错误会直接提示,不会生成残缺结果。
压缩会合并文本空白压缩模式删除标签间的换行与缩进,元素文本中的连续空白折叠为单个空格;CDATA 区段原样保留,不受影响。

⚠️ 本工具仅在浏览器本地解析并重新生成文本,不会上传、保存你粘贴的任何内容。
XML 属性与文本在 JSON 中都以字符串表示,XML ⇄ JSON 往返不保证与原始数据逐字节一致(类型、注释、实体写法等可能变化)。结果请结合实际场景核对后再使用。

📄

XML 格式化 / JSON 互转工具

开发工具 完全免费 🌙 支持黑夜模式 🔒 本地运行不上传 🧹 美化压缩一键切换 🔄 XML ⇄ JSON 📋 一键复制

接口联调、配置文件、站点地图(Sitemap)、RSS、SVG 里到处都是 XML,而它往往是挤成一行或缩进乱七八糟的。
这个工具把开发中最常用的四个 XML 操作合到一起:
① XML 美化:按层级缩进(可选 2 / 4 空格),纯文本元素不折行,属性、注释、CDATA 原样保留;
② XML 压缩:去掉所有换行与多余空白,方便塞进一行参数;
③ XML → JSON:属性加 @ 前缀、文本放 #text、同名元素聚合成数组,便于在 JS 里直接使用;
④ JSON → XML:自定义根标签名,null 输出自闭合标签,非法键名自动修正;
⑤ 严格校验:标签未闭合、尖括号缺失等错误会被拦下并提示,绝不输出半成品。

类别开发工具 / 格式转换
支持功能美化、压缩、XML ⇄ JSON
输出格式化文本,可复制
运行方式浏览器本地,不上传

核心特性

XML 一键美化缩进
压缩去空白成单行
XML 转 JSON
JSON 转 XML
属性 @ 与 #text 约定
同名元素自动聚数组
注释与 CDATA 保留
标签错误精确定位

关于这个工具

处理流程:
① 解析校验:用浏览器内置 XML 解析器(DOMParser)解析,出现 parsererror(标签未闭合、属性缺引号等)时直接展示错误,不继续处理;
② 美化 / 压缩:把源码切成“标签 / 文本”记号流,正确区分 <!-- 注释 -->、<![CDATA[]]>、<?xml?>、自闭合标签与普通开闭标签,再按层级缩进或压成一行;纯文本叶子(开标签 + 文本 + 闭标签)保持在同一行;
③ XML → JSON:遍历 DOM 树,属性加 @ 前缀,纯文本元素输出字符串,混合内容文本合并到 #text,同名兄弟元素聚合为数组;
④ JSON → XML:递归生成带缩进标签,@ 键还原为属性、#text 还原为文本、数组展开成同名标签、null 输出自闭合标签,特殊字符做实体转义。

怎么用

  1. 第 1 步
    在「功能」中选择要做的操作:XML 美化、XML 压缩、XML → JSON 或 JSON → XML。
  2. 第 2 步
    把 XML 或 JSON 内容粘贴到左侧文本框,或点「📋 填入示例」快速体验。
  3. 第 3 步
    美化或生成 XML 时可选择 2 / 4 空格缩进;JSON → XML 时可填写根标签名(默认 root)。
  4. 第 4 步
    点「🔄 开始处理」,右侧显示结果与输入/输出字符数、标签或节点数;格式有误时会指出错误。
  5. 第 5 步
    点「📋 复制结果」使用;点「⇅ 结果回填」可把输出放回输入框,接着做反向转换(如先转 JSON 再转回 XML)。

更新记录

  • v1.0 2026-10-11 工具正式上线:集成 XML 美化、XML 压缩、XML → JSON、JSON → XML 四个功能。美化支持 2/4 空格缩进、纯文本叶子不折行;压缩保留 XML 声明、注释与 CDATA;XML 转 JSON 采用 @属性、#text、同名元素聚数组约定;JSON 转 XML 支持自定义根标签、数组展开、null 自闭合与特殊字符转义。处理前先用浏览器解析器校验,错误精确定位。纯浏览器本地运行,适配黑夜模式。

常见问题

为什么 XML 里的数字转成 JSON 后变成字符串了?
XML 规范中元素内容和属性值都只有文本,没有数字、布尔类型,所以 <age>18</age> 只能转成 "age": "18"。工具不会猜测哪个字符串应该是数字(否则 010-88888888 这类号码也可能被误转)。需要类型时,在业务代码里自行 Number() 转换更安全。
同名元素什么时候会变成数组?
只有在同一级下同名元素出现 两次及以上 时才聚合成数组,例如两个 <tag> 会得到 "tag": ["a", "b"];只有一个时直接是字符串或对象,不额外包数组。这与多数 XML-to-JSON 库(如 xml2js 默认行为)一致。
提示标签未闭合 / XML 解析错误怎么办?
说明输入不是合法 XML:请检查开闭标签是否一一对应、属性值是否都用引号包住、<![CDATA[ 是否有对应的 ]]>、注释是否以 --> 结束。报错信息会来自浏览器解析器并附带出错位置附近的内容,按提示修正后重新处理即可。
JSON 转 XML 后再转回来,数据会一模一样吗?
结构基本一致,但不保证逐字节相同:JSON 的数字、布尔、null 到了 XML 都变成文本表示;对象键的顺序通常保留但 XML/JSON 规范都不保证顺序;注释在转 JSON 时会丢弃。建议把 XML ⇄ JSON 互转用于数据搬运与查看,关键数据以 JSON 源文件为准。
粘贴的内容会被上传吗?
不会。所有解析、美化、压缩与转换都在你的浏览器内完成,页面不发起任何网络请求,刷新或关闭页面后内容立即消失。不过仍建议粘贴前抹掉密码、密钥、内网地址等敏感信息。

💬 留言板 0

全部留言需审核通过后展示
💬

还没有留言,来抢沙发吧!

✍️ 说点什么
0 / 500
图形验证码