把 XML 报文转成 JSON 对象, 方便用 JSON 的思路看层级, 比对字段, 或者贴进代码里当测试数据. 输入即转换(粘贴后自动出结果, 也可以点"转换"), 只支持 XML → JSON 这一个方向.
输入: <order id="A001"><item>book</item><item>pen</item><total>35.5</total><note/></order>
输出:
{
"order": {
"item": ["book", "pen"],
"total": "35.5",
"note": null,
"@attributes": {"id": "A001"}
}
}上面这个结果里已经包含了四条主要规则, 按实测行为写:
<total>35.5</total> 得到 "35.5" 而不是 35.5; <item> 变成 ["book", "pen"], 只有一个时仍保持对象或字符串, 所以同一段报文里字段类型可能不统一; @attributes; 空元素 <note/> 变成 null; CDATA 里的内容当普通文本保留. 只有当元素还有子元素时, 它的属性才会以 @attributes 出现在对象里. 两种情况下属性直接消失:
<a k="1" j="2">txt</a> → {"a": "txt"}, k, j 全丢; <a k="1">t1</a><a>t2</a> → ["t1", "t2"], 属性同样丢弃. 所以别把这里的结果当成 XML 的无损表示: 属性承载信息的报文(比如 <price currency="CNY">12</price>)要核对原始 XML, 或者先用XML 格式化看原样.
这是 XML 到 JSON 的通病, 不是本页的 bug: XML 里"重复元素"和"单个元素"没有类型区别, 转换只能按出现次数决定. 同一份 schema 的报文转两次可能得到两种 JSON 结构, 写代码解析时不能假定类型稳定. 这也是各类 XML↔JSON 库的共同问题, 严格的库会提供"按 schema 强制数组长短"的选项.
XML 里所有值本质都是字符串, 转换时不做类型推断, 因此 35.5, true 都会变成字符串. 要参与计算或写回接口时, 需要自己转换类型.
提交前会把整段文本的换行和制表符统一替换成空格, 避免排版影响解析. 如果你的字段值本身带换行(比如多行备注, 地址), 转出来的 JSON 里换行会不见, 这部分要以原文为准.
不支持, 本页只做单向. 反方向建议用代码里的库(Java 的 Jackson XML, XStream), 它们能按你的字段名控制属性还是子元素 -- 在线工具无法表达这种映射选择.
会, 转换在服务端完成, XML 作为请求参数发送到接口, 只用于这一次转换, 页面没有账号体系也不会展示给其他访问者. 含身份证, 卡号, 密钥的报文请先脱敏.