常见问题
JSON 数组转成 XML 后长什么样?
数组里每个元素生成一个同名重复标签,而不是带下标的容器,这是 XML 表达列表的常规做法。
XML 的属性会丢吗?
不会。转成 JSON 时属性以 @ 前缀保留,转回 XML 时可还原。
CDATA 段会被特殊处理吗?
不会单独处理,内容按文本转义输出。
关于这个工具
JSON 转 XML 时根标签固定是 <root>,对象键直接做标签名,数组里每个元素生成一个同名重复标签,而不是 <item index="0"> 这种带下标的容器 —— 后者在 XML 里没有通用约定,重复标签才是表达列表的常规做法。空数组、空对象和 null 输出自闭合标签 <key/>,文本按 & < > " 四个字符转义。
反向(XML 转 JSON)有三条固定规则:属性变成 @ 前缀的键(<book id="1"> → "@id": "1");同名兄弟标签合并成数组;只有属性没有子元素的节点,文本放进 #text。这样属性→@键→再转回 XML 能还原,往返不丢信息。
要知道的边界:XML 的文本一律变成字符串,不做类型推断 —— <age>20</age> 转回来是 "20" 而不是 20,因为 XML 本身不带类型,硬猜会把 007、1.0、true 这类值猜坏。混合内容(一个元素里既有文本又有子元素)只保留子元素、散落的文本会丢;注释、处理指令、XML 声明不参与转换。
另一个常被忽略的坑:JSON 键名不一定能当 XML 标签名。含空格、以数字开头、或带 & 这类字符的键会生成非法 XML(工具不做改名,改名等于篡改数据)。遇到这种结构先把键改成合法形式(下划线、驼峰),或者改用 JSON ↔ YAML —— YAML 对键名没有这种限制。