功能开发中
XML转JSON
将XML转换为JSON格式。
转换结果 (JSON)
关于 XML 和 JSON
XML (eXtensible Markup Language) 是一种标记语言,允许用户定义自己的标签。
JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写,也易于机器解析和生成。
转换注意事项:
- XML 属性会转换为 JSON 对象的属性
- XML 文本内容通常表示为 $t 或 #text 属性
- 重复的 XML 元素会转换为 JSON 数组
- XML 命名空间会被保留为前缀
使用教程
- 输入XML数据:
- 执行转换并解读结果:
- 导出和使用JSON结果:
使用场景
- SOAP→REST API网关:企业集成工程师在构建API Gateway时,将遗留SOAP端点的XML响应实时转换为JSON,供前端SPA和移动App消费,降低客户端解析复杂度。
- Android资源分析:移动开发者解析布局文件中的View层级结构(如
@id、layout_width),转换为JSON后利用脚本批量检查UI规范。 - Excel xlsx探查:数据分析师解压
.xlsx文件后,读取sharedStrings.xml等内部组件,转换为JSON便于用Pandas或JS进行数据清洗。 - Office文档批处理:提取Word或PPT内部的文本内容,转换为JSON结构用于全文检索或关键词统计。
- RSS/Atom聚合器:前端开发者将Feed XML转换为JSON数组,驱动React/Vue组件渲染新闻列表。
- 配置文件迁移:将Log4J、Hibernate等系统的XML配置文件转换为JSON,作为现代化配置迁移的第一步。
常见问题
Q: 为什么XML属性在JSON中变成了
@开头的键?还有其他方案吗?A: 使用
@ 前缀是遵循 BadgerFish Convention,这是业界最广泛采用的映射方案之一。其主要优势是无信息丢失**且能有效区分属性和子元素(例如 <book id="1"><id>内部ID</id></book> 会转换为 "@id": "1" 和 "id": {...},不会冲突)。其他方案如Park Convention(属性与子元素同级,可能冲突)或Strip Convention(直接丢弃属性)在信息完整性和安全性上不如BadgerFish。本工具选择此方案是为了在保留完整语义和避免命名冲突之间取得最佳平衡。Q: 为什么多个同名子元素会变成数组,而单个元素不会?
A: 这是由于JSON对象的键必须唯一,不能同时是对象又是数组。本工具采用了惰性数组提升 (Lazy Array Promotion) 策略: 1. 首次遇到同名元素时,将其作为普通对象存储。 2. 再次遇到**同名元素时,将已有的值包装进数组,并将新值推入。 这种策略在大多数场景下表现良好。需要注意的是,消费该JSON的代码需要先判断值的类型(
Array.isArray()),再进行处理,以应对单个值(对象)和多个值(数组)两种情况。Q: 命名空间(namespace)和CDATA区块是如何处理的?
A:
建议反馈 (可留下联系方式)
0/200
工具名称
XML转JSON
所属分类
转换器
更新时间
2026-06-24
使用次数
39
工具简介
将XML转换为JSON格式。
功能特性
原生DOMParser解析:利用浏览器原生
new DOMParser().parseFromString(xmlStr, 'text/xml'),严格遵循W3C XML 1.0规范,自动检测标签闭合、属性引号等格式错误,并抛出具体的 parsererror 信息。
属性@前缀映射:将XML节点的所有属性(如
id, currency)以 "@属性名" 的形式存入JSON对象(例如 "@id": "1"),完美保留了XML的元数据语义,且避免了与子元素命名冲突。
文本#text约定:遵循业界通用的BadgerFish规范,将元素节点内的纯文本内容提取并存入
"#text" 键中,并自动去除首尾空白。
同名元素数组提升:智能检测父节点下重复的同名子元素(如多个
<category>),自动将其值从标量升级为数组(Array),确保多值数据不丢失。
递归DFS遍历:
xmlToJson(xml) 函数采用递归深度优先策略,无论XML嵌套多深,都能准确转换为对应层级的JavaScript嵌套对象。
实时转换与初始化:绑定输入框的
input 事件自动触发转换,提供丝滑的交互体验;页面加载时自动执行首次转换,展示预置的books示例结果。
双通道导出:提供绿色“复制 JSON”按钮(基于
select+execCommand)和紫色“下载”按钮(基于 Blob 对象和 application/json MIME类型),方便用户快速获取转换结果。
暂无收藏工具
收藏工具