XML转JSON — 保留属性、数组与Unicode
XML转JSON,属性写成 @键,重复元素变成数组
在浏览器中处理 · 不上传任何内容
属性写成 @名称,混合文本放在 #text 中。同名的兄弟元素会变成数组。所有值保持为字符串。不保留混合内容的确切顺序。不支持 DTD。
使用方法
- 粘贴一个只有一个根元素的 XML 文档。
- 检查属性键和重复元素生成的数组。
- 把得到的 JSON 复制到你的应用或分析工具中。
映射规则
根标签作为 JSON 最外层的键保留。属性使用 @ 前缀,例如 @id。同一父元素下名称重复的子元素会变成数组。没有属性也没有子元素的元素变成字符串,空元素变成空字符串。CDATA 和标准 XML 字符引用都按文本读取。
当元素含有子元素时,它直接包含的文本会收集到 #text 中。子元素周围只起排版作用的空白会被忽略。混合内容中文本和嵌套元素的相对顺序不会保留。注释和处理指令会被忽略。命名空间前缀和 xmlns 属性保留原来的名称,不会按命名空间重新组织结构。
示例
<r><item>한글</item><item>中文😀</item></r> 会在 r 下生成一个 item 数组。<price currency="KRW">001</price> 会生成值为 KRW 的 @currency,以及值为字符串 001 的 #text。
校验与限制
标签未闭合、有多个根元素或使用未知实体时会报错。不支持 DTD 和实体声明。输入最多 100 万个字符、64 层嵌套。这种映射便于查看数据,但并不是无损的 XML 序列化。结果始终是纯文本,所有转换都在你的浏览器本地完成。
常见问题
看起来像数字的值会转成数字吗?
不会。元素文本和属性值都保持为字符串,所以 001 这类值的前导零会被保留。
混合内容的顺序会保留吗?
不会。元素直接包含的文本会收集到 #text 中,这些文本和子元素之间的相对位置不会保留。
能加载 DTD 或外部实体吗?
不能。DOCTYPE 和 ENTITY 声明会被拒绝。工具不会获取外部文档,也不会展开声明的实体。
XML会被上传吗?
不会。转换全部在你的浏览器本地完成。