XML 转换器
把 XML 转换成 JSON、YAML、TOML、JavaScript 对象字面量或 PHP 数组。浏览器自带的 XML 解析器读取文档后,再按结构映射成数据:元素变成键,重复的同名兄弟元素合并为数组,属性带前缀放进字段,输出尽量保持原有结构。它适合处理日常的 XML 来源,例如 SOAP 响应、RSS 与 Atom 订阅源、站点地图、SVG、Android 和 Maven 配置以及老接口的报文,并且可以选择如何处理属性、文本值和数字。检查面板会汇总根元素、元素与属性数量、命名空间前缀、混合内容和 CDATA。解析错误会给出行列位置和上下文。解析、转换和复制都在当前浏览器标签页内完成,不会上传、代理或在服务器记录。
- 一份 XML 输入对应五种目标格式:JSON、YAML、TOML、JavaScript 对象字面量和 PHP 数组,各有独立选项
- 属性映射为带前缀的键(可配置,默认 @),也可以在只关心元素内容时整体丢弃
- 重复的子元素合并为数组,文本值可以转换为数字和布尔值,也可以保持原样
- 检查面板会汇总根元素、元素与属性数量、嵌套深度、命名空间前缀、混合内容和 CDATA
- 完全本地处理,不上传、不埋点,适合生产报文、SOAP 抓包和配置样例
功能简介
一个专注于从 XML 出发的工具。元素到键的映射、重复兄弟元素合并为数组、属性处理和值类型转换都在解析阶段完成,输出可以直接交给下游接口、配置加载器、JSON Schema 校验器或代码生成器,无需再手动清理一遍。
- 01
开箱即用的五种目标格式
XML 转 JSON、YAML、TOML、JavaScript 对象字面量和 PHP 数组。JSON 提供缩进大小和按键名字母排序;YAML 与 TOML 输出干净的嵌套结构;TOML 会强制对象根而不是给出半截结果;JS 对象字面量保留带引号的键和正确转义;PHP 数组输出完整的 <?php return [...]; 文件。
- 02
可预期的元素到对象映射
每个元素按标签名成为对象的键,文本内容成为值,重复出现的同名兄弟元素按文档顺序合并为数组。根元素名会作为顶层键保留,让输出尽量贴合源文档的树结构。
- 03
属性由你掌控
属性映射为带可配置前缀(默认 @)的键,避免和子元素名冲突。只关心元素内容时可以整体关闭属性;当某个元素同时带属性和文本时,文本会放到 #text 字段。
- 04
可选的值类型转换
数字和布尔文本可以转换为真正的数字和布尔值,也可以保持为字符串。只有当值能精确往返时才转换,因此带前导零的编码、形似版本号的字符串、电话号码以及超出安全范围的整数都会保留为文本。
- 05
面对陌生 XML 的检查面板
面板会汇总根元素、元素与属性数量、嵌套深度、命名空间前缀、混合内容和 CDATA 使用情况,让你在信任转换结果之前先看懂一份陌生的文档。
- 06
完全在浏览器中运行
解析、转换、检查和复制都在本页用浏览器自带的 XML 解析器完成。你的 XML 不会通过任何请求离开页面,发送到服务器、CDN 或第三方分析平台,适合生产报文和配置样例。
如何使用
整个流程可以收敛成四步:粘贴 XML、选择格式、查看检查面板、复制结果。
- 01
把 XML 粘贴到左侧输入面板。解析会立即进行,检查面板会显示根元素、各项数量、命名空间前缀和混合内容警告。
- 02
在底部选择目标:JSON、YAML、TOML、JavaScript 对象或 PHP 数组。JSON 还提供缩进大小和键排序,切换时输出会实时更新。
- 03
调整解析选项:保留还是丢弃属性、修改属性前缀、决定数字和布尔文本是转换还是保持原样。
- 04
查看检查面板。混合内容和 CDATA 会被标出但不会阻止转换,它们提示文本与结构重叠的位置,方便你确认结构是否符合预期。
- 05
点击复制,把输出粘贴到 IDE、代码片段管理器、API 客户端或配置加载器里继续工作。
功能说明
日常处理 XML 时反复出现的麻烦在这里默认就被抹平,不需要为了一次干净的转换而串联多个外部工具。
- 解析使用浏览器自带的 XML 引擎,因此良构规则与其他遵循标准的解析器一致。
- 重复的同名兄弟元素始终按文档顺序合并为数组,让列表型 XML 映射成可预期的 JSON、YAML 和 TOML。
- 属性前缀让属性和子元素彼此区分,一个开关即可在只需要元素内容时丢弃属性。
- JSON 输出保留元素顺序,并提供可选的字母排序,便于稳定的 git diff、代码审查和 JSON Schema 校验。
- TOML 转换要求对象根,会清晰报错,而不是给出任何解析器都不接受的半截文件。
- JavaScript 对象和 PHP 数组输出保留嵌套、转义和字面量,结果可以直接放进测试数据、配置或示例。
- 检查面板列出根元素、各项数量、深度和命名空间前缀,让陌生的 XML 文件几秒内变得可读。
- 一切都在浏览器中运行,没有 SaaS 后端,因此在飞机上、仅限 VPN 的网络里或企业代理后面都能照常使用。
适合哪些场景
只要源头是 XML,下面这些日常任务都能少一层手动复制粘贴或截图描述。
-
把 SOAP 响应转成 JSON
粘贴 SOAP 或老接口的 XML 响应,按 JSON 阅读,方便把字段映射到现代客户端、测试数据或 TypeScript 类型,而不用手动解析尖括号。
-
把 RSS 与 Atom 订阅源当数据读
把订阅源转成 JSON 或 YAML,查看条目标题、链接和日期,再把结构化结果交给脚本、静态站点生成器或内容流水线。
-
把 XML 配置迁移到 YAML 或 TOML
准备告别 web.xml、Spring 的 XML 上下文或 Maven 的 pom.xml?先看 YAML 或 TOML 输出,再手动微调,而不用把整棵树重新敲一遍。
-
查看 SVG 结构
把 SVG 转成 JSON,以编程方式遍历分组、路径和属性,或在不引入完整 XML DOM 库的情况下提取特定属性值。
-
用示例报文构建测试数据
后端和合作方常常提供 XML 示例。把它们转成 JSON 或 JS 对象,让前端 Jest、Vitest 和 Storybook 测试复用同一份数据结构。
-
从 XML 生成 PHP 配置
把老的 XML 设置文件转成 <?php return [...]; 数组,直接放进 Laravel 或 WordPress 项目,并保持嵌套和转义。
-
比较两份 XML 文档
把两个文件都转成 JSON,再做结构化 diff,精确看出两个版本的报文或配置之间改动了哪些元素、属性和值。
-
讲解和记录 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 字段,且文本与元素之间的顺序不会保留。
- 不解析外部实体、DOCTYPE include 或命名空间 URL;所有内容都按本地文本处理,不会联网抓取,也因此避免了实体膨胀风险。
- 不保证可逆:把 XML 转成 JSON 再转回去,并不总能逐字节还原原文档,因为有些 XML 构造没有直接对应的 JSON。
- 很大的文件(数 MB)可能让浏览器变慢,但处理始终在本地,不会被截断或上传。
常见问题
常见问题涵盖属性处理、数组、值类型、命名空间,以及数据是否离开浏览器。
属性是怎么表示的?
默认每个属性会成为带 @ 前缀(可配置)的键,从而不与子元素名冲突。你可以修改前缀,或在只需要元素内容时整体关闭属性。当某个元素同时带属性和文本时,文本会存放在 #text 键下。
为什么重复元素变成了数组?
当同一个父元素下出现多个同名元素时,这些值会按文档顺序合并为数组,这是在 JSON、YAML 或 TOML 里无损表示兄弟元素的唯一方式。注意单个出现仍是对象,所以可能只有一项的列表会出现两种结构,下游要同时兼容。
为什么我的数字还是字符串?
值类型转换只会转换能精确往返的文本,因此 “007”、“1.0”、电话号码以及超出 JavaScript 安全范围的整数都会保留为字符串,以免丢数据。关闭“解析数字与布尔”会把所有值都当字符串,对标识符和编码最安全。
命名空间会怎么处理?
命名空间前缀会原样保留在键上,因此 soap:Body 会变成键 “soap:Body”。工具不会剥离或解析命名空间 URL。检查面板会列出它发现的前缀,方便你判断下游代码是否需要它们。
为什么 TOML 转换提示根必须是对象?
TOML 要求顶层是表。转换器始终把输出包在根元素名下,所以这通常只在异常输入时出现;一旦出现,可以先看 JSON 输出确认结构,再转成 TOML。
注释和 CDATA 会保留吗?
注释、处理指令和 XML 声明会被丢弃,只映射元素、属性和文本。CDATA 区段会按普通文本读取,检查面板会在存在 CDATA 时给出提示,避免意外。
能把结果再转回 XML 吗?
这个工具是从 XML 出发的。要反向转换,JSON 转换和 YAML 转换都可以输出 XML。由于有些 XML 构造没有直接对应的 JSON,往返不保证逐字节一致。
粘贴的数据会被上传吗?
不会。解析、转换、检查和复制都在浏览器内用其内置 XML 解析器完成。没有任何请求会把你的 XML 带出本页发送到服务器、CDN 或分析平台,因此处理生产报文和机密样例数据都很安全。
更多相关工具
继续你的数据工作:反向转换、美化或校验 XML,或为下一步重塑 JSON。下面的工具可以串成完整的工作流。