【问题标题】:XML-JSON Converter RulesXML-JSON 转换器规则
【发布时间】:2011-12-16 00:35:21
【问题描述】:

我正在使用 net.sf.json.xml.XMLSerializer 将 XML 文档转换为 JSON。对于几乎两个相似的 XML 文档,我得到了两个不同的结果。我的代码是:

public static void main(String[] args) throws DocumentException {
    String t1="<A><B>aa</B><C><D>Martin Ritt</D> </C></A>";
    String t2="<A><B>aa</B><C><D>Martin Ritt</D></C></A>";
    System.out.println(new XMLSerializer().read(t1).toString());
    System.out.println(new XMLSerializer().read(t2).toString());
}

第一个字符串 t1 转换为:

{"B":"aa","C":["Martin Ritt"]}

而 t2 被转换为:

{"B":"aa","C":{"D":"Martin Ritt"}}

这意味着,在第一种情况下,C 被认为是一个数组,而在第二种情况下,它被认为是一个对象。两个 XML 的区别在于 D 元素关闭后的空格。也就是&lt;/D&gt;之后。

知道这里发生了什么吗?规则是什么?我更感兴趣的是如何让它一致地识别数组。

【问题讨论】:

    标签: xml json serialization json-simple


    【解决方案1】:

    规则是:

    • 根节点被丢弃,在这种情况下&lt;A&gt;
    • 带有文本节点子节点的元素节点 =>

      {"Element":"text node"}
      
    • 带有子元素的元素节点 =>

      {"Element":{"Element":"text node"} } //t1
      
    • 具有混合子节点的元素节点(元素 + 空格)=>

      {"Element":["text node"]} //t2
      

    参考文献

    【讨论】:

      猜你喜欢
      • 2010-12-04
      • 1970-01-01
      • 2013-04-10
      • 2019-08-31
      • 2016-08-10
      • 2015-07-27
      • 1970-01-01
      • 1970-01-01
      • 2011-09-12
      相关资源
      最近更新 更多