XML转JSON
将XML转换为JSON
XML转JSON是什么
用 xml-js 的 compact 模式把 XML 转成 JSON,输出缩进 2 个空格。属性统一放在 _attributes 里、文本放在 _text 里,CDATA 放在 _cdata 里。适合把接口返回的 XML 报文快速转成能在 JS 里处理的结构,或者单纯看清嵌套关系。
所有计算都在你的浏览器本地完成,输入的内容不会上传到服务器。
怎么用XML转JSON
- 在左侧输入框粘贴 XML,默认示例是 <a x="1.234" y="It's"/>
- 右侧输出框实时显示转换后的 JSON
- 确认结构无误后点复制按钮取走,或下载文件
- XML 不合法时输入框会提示「XML 无效」,输出框同时为空
示例
输入
<a x="1.234" y="It's"/>输出
{
"a": {
"_attributes": {
"x": "1.234",
"y": "It's"
}
}
}属性全部进 _attributes,数值 1.234 仍保持字符串
常见问题
为什么有的节点是对象、有的是数组?
compact 模式下单个同名元素是对象,多个才是数组。这是 xml-js 的固定行为,页面没有提供「强制数组」的开关,只能在你的代码里做兼容处理。
能把 JSON 转回 XML 吗?
不能,这个页面只有 XML → JSON 单向转换。需要反向转换请找专门的 JSON 转 XML 工具。
命名空间前缀会怎么处理?
前缀会原样保留在键名里,比如 <ns:item> 转出来的键就是 "ns:item",不会自动解析成命名空间 URI + 本地名。
XML 报文会上传吗?
不会。xml-js 在浏览器里解析,报文内容不发送到服务器,也不保存。
小提示
- 同名元素只有一个时是对象、有多个时才是数组:<item> 出现两次才会变成数组。解析端要写 Array.isArray 判断,否则线上数据一变就崩
- 属性值一律是字符串:<a x="1.234"/> 里的 1.234 转出来是 "1.234",不会自动变成数字,需要自己 Number() 一下
- 属性与文本分开存放,所以转出来的 JSON 比原 XML 更啰嗦;如果只想要纯数据结构,转换后还要自己剥掉 _attributes / _text 前缀