HandyTools Hub

XML 转 JSON 转换器

即时在 XML 和 JSON 格式之间转换

在浏览器中将 XML 文档与 JSON 互相转换。属性、重复元素和混合文本采用广泛使用的 @ / #text 约定进行映射,往返转换可完整保留数据。粘贴 API 响应、配置文件或 RSS 订阅源即可获得可读的 JSON —— 也可以一键把 JSON 转回合法的、带缩进的 XML 文档。

如何使用

  • 选择方向: 使用切换按钮选择 XML → JSON 或 JSON → XML。
  • 粘贴输入: 将 XML 或 JSON 粘贴到输入框(或加载示例)。
  • 转换: 点击转换按钮即可立即查看结果。
  • 复制或下载: 复制到剪贴板,或将结果保存为 .json / .xml 文件。

功能特性

  • 双向转换:一个工具同时支持 XML → JSON 和 JSON → XML
  • 属性映射为 @ 前缀键,文本内容映射为 #text
  • 重复元素自动成为 JSON 数组 —— 反之亦然
  • 生成的 XML 可选择 2 空格或 4 空格缩进
  • 自动转义 XML 输出中的 &、<、> 和引号
  • 完全在浏览器中运行 —— 数据从不上传

@ 和 #text 约定详解

XML 能表达 JSON 无法直接表达的内容:一个元素可以同时携带属性、包含文本并拥有子元素。本转换器采用一种流行的映射方式,将这些丰富信息表示为纯 JSON。属性变成以 @ 开头的键,因此 会变成 {“@id”: “42”}。与属性或子节点共存的文本存储在 #text 下,因此 9.99 会变成 {“@currency”: “USD”, “#text”: “9.99”}。只含文本的叶子元素会折叠为普通字符串,让简单文档保持简单。由于映射是对称的,以这种方式生成的 JSON 可以转回结构等价的 XML。

使用场景

  • API 集成: 将遗留系统或 SOAP API 的 XML 响应转为 JSON 供 JavaScript 应用使用。
  • 配置迁移: 将 XML 配置文件(pom.xml、web.config、Android 清单)转为 JSON 以便检查或转换。
  • 订阅源处理: 将 RSS/Atom 订阅源解析为易于过滤和渲染的 JSON 对象。
  • 数据导出: 当下游系统只接受 XML 时,从 JSON 生成 XML。

让转换更顺利的建议

现代 JavaScript 会保留 JSON 对象的键顺序,因此输出中属性总是排在子元素之前。XML 中的一切都是文本,所以数字和布尔值在 JSON 中会以字符串形式出现 —— 如果类型很重要请自行转换。编写用于 JSON → XML 方向的 JSON 时,请记住键必须是合法的 XML 名称:不能含空格,也不能以数字开头;工具会标记非法名称,而不是生成损坏的标记。深层嵌套或超大文档也能正常转换,但大型 XML 格式化后的 JSON 可能很长 —— 结果很大时请使用下载而不是复制。

相关工具

常见问题

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

属性会变成以 @ 为前缀的对象键。例如 <user id="42"> 会变成 {"user": {"@id": "42"}}。反向将 JSON 转回 XML 时,任何以 @ 开头的键都会重新写为元素属性。

重复的 XML 元素会怎样处理?

同名的兄弟元素会被收集到 JSON 数组中。<users><user>Alice</user><user>Bob</user></users> 会变成 {"users": {"user": ["Alice", "Bob"]}}。反向转换时,JSON 数组会展开回重复的元素。

混合文本内容放在哪里?

与子元素或属性共存的文本会存储在特殊的 #text 键下。例如 <price currency="USD">9.99</price> 会变成 {"price": {"@currency": "USD", "#text": "9.99"}}。

我的数据会上传到服务器吗?

不会。所有转换完全在浏览器中完成,使用内置的 DOMParser 和纯 JavaScript。数据不会经过网络传输,也不会被存储。

可以控制 XML 的缩进吗?

可以。在 JSON → XML 模式下可以选择 2 空格或 4 空格缩进。生成的文档始终以标准的 <?xml version="1.0" encoding="UTF-8"?> 声明开头,并且 &、<、> 和引号等特殊字符会自动转义。