数据

XML 转换器

把 XML 转换成 JSON、YAML、TOML、JavaScript 对象字面量或 PHP 数组。浏览器自带的 XML 解析器读取文档后,再按结构映射成数据:元素变成键,重复的同名兄弟元素合并为数组,属性带前缀放进字段,输出尽量保持原有结构。它适合处理日常的 XML 来源,例如 SOAP 响应、RSS 与 Atom 订阅源、站点地图、SVG、Android 和 Maven 配置以及老接口的报文,并且可以选择如何处理属性、文本值、数字、命名空间前缀,以及只有一项的列表。检查面板会汇总根元素、元素与属性数量、命名空间前缀、混合内容、CDATA,以及被丢弃的注释和处理指令。解析出错时会给出行列位置和出错的那一行源码。解析、转换和复制都在当前浏览器标签页内完成,不会上传、代理或在服务器记录。

  • 一份 XML 输入对应五种目标格式:JSON、YAML、TOML、JavaScript 对象字面量和 PHP 数组,各有独立选项
  • 属性映射为带前缀的键(可配置,默认 @),也可以整体丢弃;命名空间前缀一键去掉,soap:Body 直接变成 Body
  • 重复的子元素合并为数组,也可以让每个子元素都用数组,这样只有一项的列表在下游不会变成另一种结构
  • 文本值可以转换成真正的数字和布尔值,检查面板会汇总数量、深度、混合内容、CDATA、键名冲突和被丢弃的构造
  • 完全本地处理,不上传、不埋点,适合生产报文、SOAP 抓包和配置样例
0 字符
等待输入
转换结果会显示在这里
操作

功能简介

一个专注于从 XML 出发的工具。元素到键的映射、重复兄弟元素合并为数组、属性处理和值类型转换都在解析阶段完成,输出可以直接交给下游接口、配置加载器、JSON Schema 校验器或代码生成器,无需再手动清理一遍。

  1. 01

    开箱即用的五种目标格式

    XML 转 JSON、YAML、TOML、JavaScript 对象字面量和 PHP 数组。JSON 与 YAML 可选缩进大小,按键名字母排序对每种目标都生效;TOML 把表嵌在根元素下面,并自动给 @name 这类键加引号,输出可以直接被解析;JS 对象字面量保留带引号的键和正确转义;PHP 数组输出完整的 <?php return [...]; 文件。

  2. 02

    可预期的元素到对象映射

    每个元素按标签名成为对象的键,文本内容成为值,重复出现的同名兄弟元素按文档顺序合并为数组。如果不想让下游代码同时兼容两种结构,可以打开「统一转成数组」;根元素名始终作为顶层键保留,让输出尽量贴合源文档的树结构。

  3. 03

    属性由你掌控

    属性映射为带可配置前缀(默认 @)的键,避免和子元素名冲突;万一你清空了前缀真的撞上同名子元素,检查面板会点名那个键,而不是让两个值悄悄并进一个数组。只关心元素内容时可以整体关闭属性;当某个元素同时带属性和文本时,文本会放到 #text 字段。

  4. 04

    可选的值类型转换

    数字和布尔文本可以转换为真正的数字和布尔值,也可以保持为字符串。只有当值能精确往返时才转换,因此带前导零的编码、形似版本号的字符串、电话号码以及超出安全范围的整数都会保留为文本。

  5. 05

    面对陌生 XML 的检查面板

    面板会汇总根元素、元素与属性数量、嵌套深度、命名空间前缀、混合内容、CDATA,以及丢掉了多少条注释和处理指令,让你在信任转换结果之前先看懂一份陌生的文档。

  6. 06

    完全在浏览器中运行

    解析、转换、检查和复制都在本页用浏览器自带的 XML 解析器完成。你的 XML 不会通过任何请求离开页面,发送到服务器、CDN 或第三方分析平台,适合生产报文和配置样例。

如何使用

整个流程可以收敛成四步:粘贴 XML、选择格式、查看检查面板、复制结果。

  1. 01

    把 XML 粘贴到左侧输入面板。解析会立即进行,检查面板会显示根元素、各项数量、命名空间前缀和混合内容警告。

  2. 02

    在底部选择目标:JSON、YAML、TOML、JavaScript 对象或 PHP 数组。JSON 与 YAML 可以选缩进大小,按键名排序对每种目标都生效,切换时输出会实时更新。

  3. 03

    调整解析选项:保留还是丢弃属性、修改属性前缀、去掉命名空间前缀、让每个子元素都用数组,以及决定数字和布尔文本是转换还是保持原样。

  4. 04

    查看检查面板。混合内容、CDATA、被丢弃的注释、键名冲突都会被标出但不会阻止转换,它们提示文档里有目标格式装不下的东西,方便你确认结构是否符合预期。

  5. 05

    点击复制,把输出粘贴到 IDE、代码片段管理器、API 客户端或配置加载器里继续工作。

功能说明

日常处理 XML 时反复出现的麻烦在这里默认就被抹平,不需要为了一次干净的转换而串联多个外部工具。

  • 解析使用浏览器自带的 XML 引擎,因此良构规则与其他遵循标准的解析器一致。
  • 重复的同名兄弟元素按文档顺序合并为数组,打开「统一转成数组」后连只有一项的列表也是数组,让列表型 XML 映射成可预期的 JSON、YAML 和 TOML。
  • 属性前缀让属性和子元素彼此区分,一个开关就能在只需要元素内容时丢弃属性,另一个开关能把命名空间前缀从所有键上去掉。
  • 每种目标都保留元素顺序,并提供可选的字母排序,便于稳定的 git diff、代码审查和 JSON Schema 校验。
  • 转成 TOML 时,@name、xml:lang、#text 这些 TOML 不能裸写的键会自动加引号,输出能被解析,而不是在第一个属性上就失败。
  • JavaScript 对象和 PHP 数组输出保留嵌套、转义和字面量,结果可以直接放进测试数据、配置或示例。
  • 检查面板列出根元素、各项数量、深度、命名空间前缀和被丢弃的构造,让陌生的 XML 文件几秒内变得可读。
  • 一切都在浏览器中运行,没有 SaaS 后端,因此在飞机上、仅限 VPN 的网络里或企业代理后面都能照常使用。

适合哪些场景

只要源头是 XML,下面这些日常任务都能少一层手动复制粘贴或截图描述。

  1. 把 SOAP 响应转成 JSON

    粘贴 SOAP 或老接口的 XML 响应,按 JSON 阅读,方便把字段映射到现代客户端、测试数据或 TypeScript 类型,而不用手动解析尖括号。

  2. 把 RSS 与 Atom 订阅源当数据读

    把订阅源转成 JSON 或 YAML,查看条目标题、链接和日期,再把结构化结果交给脚本、静态站点生成器或内容流水线。

  3. 把 XML 配置迁移到 YAML 或 TOML

    准备告别 web.xml、Spring 的 XML 上下文或 Maven 的 pom.xml?先看 YAML 或 TOML 输出,再手动微调,而不用把整棵树重新敲一遍。

  4. 查看 SVG 结构

    把 SVG 转成 JSON,以编程方式遍历分组、路径和属性,或在不引入完整 XML DOM 库的情况下提取特定属性值。

  5. 用示例报文构建测试数据

    后端和合作方常常提供 XML 示例。把它们转成 JSON 或 JS 对象,让前端 Jest、Vitest 和 Storybook 测试复用同一份数据结构。

  6. 从 XML 生成 PHP 配置

    把老的 XML 设置文件转成 <?php return [...]; 数组,直接放进 Laravel 或 WordPress 项目,并保持嵌套和转义。

  7. 比较两份 XML 文档

    把两个文件都转成 JSON,再做结构化 diff,精确看出两个版本的报文或配置之间改动了哪些元素、属性和值。

  8. 讲解和记录 XML 结构

    把嵌套 XML 转成 JSON 或 YAML,让示例文档在文章、课件和入职材料里读起来更清晰,不用面对深层的尖括号缩进。

延伸阅读

如果你手头的源头是 YAML,比如 Kubernetes 清单、Helm values 文件或 CI 工作流,需要转向 JSON、TOML、XML、JavaScript 对象字面量或 PHP 数组,可以使用 YAML 转换器。如果 XML 本身需要先清理一下,比如把压缩的报文美化、折叠深层节点,或在信任转换前确认它是否良构,可以交给 XML 格式化,它能缩进、压缩并校验 XML,并提供行列错误提示。如果你已经有 JSON,想把它转成 YAML、XML、CSV、TOML、JavaScript 对象或 PHP 数组,可以使用 JSON 转换器 朝那个方向转换,并提供针对各格式的选项,从而保持单一数据源,而不用逐个手改每种目标。

使用建议

XML 同时把信息放在三处:元素、属性和文本,所以一次干净的转换取决于决定每一处如何映射。一些小习惯能让结果在各个项目里都可预期。

  • 先决定属性是否重要。属性承载数据时用清晰的前缀保留,只需要元素内容时就丢弃。
  • 当 XML 里包含标识符、版本字符串、前导零编码或电话号码这些必须保持文本的内容时,关闭值类型转换。
  • 留意混合内容,也就是文本与子元素并列。它会被合并进 #text 字段,往往不是你想要的;如果文本有意义,请调整源结构。
  • 记住只出现一次的元素不会被包进数组,出现两次及以上才会,所以同一个字段可能一会儿是单个值、一会儿是列表。如果列表可能只有一项,与其让下游兼容两种结构,不如打开「统一转成数组」。
  • 把 XML 转成 JSON 后,用 JSON diff 与上一版本比较,在改动进入生产前先抓出悄悄变化的字段。
  • XML 注释和处理指令在转换时会被丢弃,检查面板会数给你看。把必须保留的内容提升为真正的元素或写进外部文档。
  • 不开启去前缀时,命名空间会作为字面前缀保留在键上(例如 soap:Body)。复制输出前先确认下游代码要的是哪一种,两种结构并不通用。
  • 对很大的文档,先用有代表性的片段验证选项,确认结构无误后再转换整份文件。

边界与注意事项

清楚这个工具不做什么,才不会把它当成完整的 XML IDE、schema 校验器或转换引擎。

  • 不做 schema 校验:DTD、XML Schema(XSD)和 RELAX NG 规则不在范围内,良构不等于有效。
  • 不做 XSLT 或 XPath:工具只把结构映射成其他格式,不用样式表转换,也不计算路径表达式。
  • XML 注释、处理指令和声明不会保留在输出里,只映射元素、属性和文本,面板会报告丢弃了多少条。
  • 混合内容(文本与子元素交错)无法总是干净映射;文本会被收进 #text 字段,且文本与元素之间的顺序不会保留。
  • 不会联网抓取任何东西:外部实体、DTD 引用和命名空间 URL 都不会被解析。文档内部声明的实体由浏览器解析器展开,展开量有上限,遇到「十亿次大笑」那类文档会直接报错,而不是失控膨胀。
  • 不保证可逆:把 XML 转成 JSON 再转回去,并不总能逐字节还原原文档,因为有些 XML 构造没有直接对应的 JSON。
  • 很大的文件(数 MB)可能让浏览器变慢,但处理始终在本地,不会被截断或上传。

常见问题

常见问题涵盖属性处理、数组、值类型、命名空间,以及数据是否离开浏览器。

属性是怎么表示的?

默认每个属性会成为带 @ 前缀(可配置)的键,从而不与子元素名冲突。你可以修改前缀,或在只需要元素内容时整体关闭属性。当某个元素同时带属性和文本时,文本会存放在 #text 键下。

为什么重复元素变成了数组?

当同一个父元素下出现多个同名元素时,这些值会按文档顺序合并为数组,这是在 JSON、YAML 或 TOML 里无损表示兄弟元素的唯一方式。只出现一次时不会被包进数组,所以可能只有一项的列表会出现两种结构。打开「统一转成数组」后,无论文档里写了几个,每个子元素都会是数组。

为什么我的数字还是字符串?

值类型转换只会转换能精确往返的文本,因此 “007”、“1.0”、电话号码以及超出 JavaScript 安全范围的整数都会保留为字符串,以免丢数据。关闭“解析数字与布尔”会把所有值都当字符串,对标识符和编码最安全。

命名空间会怎么处理?

默认原样保留在键上,因此 soap:Body 会变成键 “soap:Body”。打开「去掉命名空间前缀」后,同一个元素会变成 “Body”,xmlns 声明也会一并去掉——前缀没了,声明也没有意义。两种模式都不会解析命名空间 URL,检查面板始终会列出发现的前缀。

转成 TOML 之后是什么样子?

根元素成为顶层表,嵌套元素成为嵌套表,重复的同名兄弟元素成为数组。TOML 不能裸写的键——@name 这类属性键、带命名空间的 xml:lang、#text 字段——都会自动加引号,输出可以直接被解析。TOML 既没有 null 也没有日期类型,不过 XML 文档这边也产生不了:空元素转换后是空字符串。

注释和 CDATA 会保留吗?

注释、处理指令和 XML 声明会被丢弃,只映射元素、属性和文本。CDATA 区段会按普通文本读取,检查面板会在存在 CDATA 时给出提示,避免意外。

能把结果再转回 XML 吗?

这个工具是从 XML 出发的。要反向转换,JSON 转换和 YAML 转换都可以输出 XML。由于有些 XML 构造没有直接对应的 JSON,往返不保证逐字节一致。

粘贴的数据会被上传吗?

不会。解析、转换、检查和复制都在浏览器内用其内置 XML 解析器完成。没有任何请求会把你的 XML 带出本页发送到服务器、CDN 或分析平台,因此处理生产报文和机密样例数据都很安全。

更多相关工具

继续你的数据工作:反向转换、美化或校验 XML,或为下一步重塑 JSON。下面的工具可以串成完整的工作流。