XML-JSON转换器规则

时间:2011-12-16 00:35:22

标签: xml json serialization json-simple

我正在使用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元素后的空间。也就是说,在</D>之后。

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

1 个答案:

答案 0 :(得分:0)

规则是:

  • 丢弃根节点,在本例中为<A>
  • 带有文本节点children =&gt;的元素节点

    {"Element":"text node"}
    
  • 元素子节点=&gt;

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

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

<强>参考