ToolConvoyToolConvoyv2.6
DATA

XML 转 JSON — 在浏览器中将 XML 数据转为 JSON

将 XML 转换为 JSON 数据。可配置的属性处理方式、命名空间剥离与数组检测,全部在客户端运行——无上传、无限制。

● 本地运行 · 零拷贝流水线页面加载以来工具发出的网络请求:0 次

XML 和 JSON 是过去 25 年中最通用的两种数据交换格式,它们之间的互转,是连接两套技术栈的桥梁。JSON 赢得了 API 时代——它是 JavaScript 的原生格式,是 REST 接口的默认选择,也是配置文件的通用语言。XML 赢得了企业时代——它是 SOAP 的格式、文档存储的格式、金融交易报文格式,以及受监管行业数据交换中把 schema 校验作为法律要求的格式。从 XML 转 JSON,与其说是技术,不如说是艺术,因为 XML 有一些 JSON 无法直接表达的特性:属性、命名空间、注释、处理指令和混合内容。

属性问题是最显眼的那个。XML 元素既可以带子元素(结构化数据),也可以带属性(元素的元数据),但 JSON 内置上无法区分数据和元数据。每个 XML 转 JSON 的转换器都要用一种约定来解决——给属性加 @ 前缀、单独用元数据键、或者把属性剥离掉——而且没有任何两个转换器就「正确的约定」达成一致。本工具默认采用 @ 前缀约定,因为它是 npm 生态中最被广泛采用的(xml2js、fast-xml-parser),但设置面板暴露了全部三种选项,让输出匹配下游 JSON 消费者所期待的约定。

最终的交接:如果 JSON 输出要变成某种编程语言的类型化数据,再过一个 JSON 到代码生成器(前端用 JSON to TypeScript,后端服务用 JSON to Go,数据管道用 JSON to Python)。如果 XML 携带了正式 schema,用 JSON Schema 生成器从输出反推一个 JSON Schema,让未来的 JSON 负载同样能套用 XML schema 曾约束的规则。如果目的地是配置管理系统(Ansible、Kubernetes、Docker Compose),再把 JSON 进一步用 JSON 转 YAML 工具转成 YAML——YAML 是大多数 DevOps 工具偏好的配置格式。

广告

使用方法

  1. 粘贴或拖入你的 XML

    把 XML 字符串或文件拖入输入框。解析器会校验 XML 语法,并把任何良构性错误就地显示。合法的 XML 会自动进入转换阶段。

  2. 配置 JSON 约定

    为 XML 属性选择一种约定(`@` 前缀、单独的 `$` 对象,或直接剥离),切换命名空间前缀剥离和数组检测灵敏度。默认设置与 xml2js 库的约定一致。

  3. 复制或下载 JSON

    把格式化好的 JSON 复制到剪贴板,或下载为 .json 文件。输出使用 2 空格缩进美化,更易读、也对 diff 友好。

常见问题

转换器如何决定什么成为 JSON 数组?

同名重复的兄弟元素会成为 JSON 数组。单个 `<item>` 元素保留为对象,除非开启「强制数组」模式。检测阈值可调,无论出现次数,都把某些标签名强制视为数组。

转换器对 XML 属性使用什么约定?

默认是 `@` 前缀:一个 XML 的 `<book id="123">` 变成 `{"book": {"@id": "123"}}`。设置中还提供替代约定(用 `$` 包装对象,或者完全剥离属性)。属性到 JSON 的映射不存在统一标准——选用与下游 JSON 消费者一致的约定即可。

XML 命名空间在 JSON 输出中如何处理?

默认在用于作用域之后,从元素名中剥除命名空间前缀。`<ns:title xmlns:ns="http://example.com">` 仅变成 `"title"`。在设置中开启「保留命名空间前缀」,即可让 `"ns:title"` 作为键名保留。

含有子元素的元素中的 XML 文本内容会怎样?

混合内容(同时包含文本和子元素的元素)默认使用 `#text` 键处理。`<para>Hello <b>world</b></para>` 变成 `{"para": {"#text": "Hello ", "b": "world"}}`。在设置中切换「合并文本」即可合并相邻的文本节点。

限制说明

  • 不处理 XML schema 和 DTD转换器忽略 DOCTYPE 声明、内部 DTD 子集和 XSD schema 引用。DTD 中的实体声明(除五个预定义 XML 实体外)会导致解析失败。
  • 输出中不区分 CDATACDATA 段会被解包并视为普通文本。JSON 消费者无法区分原本包裹在 `<![CDATA[...]]>` 中的内容和普通文本内容。
  • 剥离处理指令和注释XML 处理指令(`<?xml-stylesheet?>`)和注释(`<!-- comment -->`)在转换中丢弃。JSON 没有直接对应的表示。

平台说明

macOS
macOS 自带 `plutil`,但它只能把 plist XML 转 JSON,无法处理通用 XML。浏览器工具能处理任意 XML schema,是检查 API 响应体的合适选择。
Linux
命令行等价是 `xmlstarlet` 或 `xq`(来自 yq),都能把 XML 转 JSON。从聊天窗口或文档页粘贴 XML 时,浏览器工具是更顺手的选择。
Web
解析和转换全部在浏览器中完成。XML 内容从不上传。在处理需要保密的 XML 负载时,无需经过任何服务器端转换服务即可完成。
广告

相关工具

广告