Правила XML-JSON Converter - PullRequest
       10

Правила XML-JSON Converter

3 голосов
/ 16 декабря 2011

Я использую 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 голосов
/ 13 июня 2015

Правила:

  • Корневые узлы отбрасываются, в этом случае <A>
  • Узлы элементов с дочерними текстовыми узлами =>

    {"Element":"text node"}
    
  • Узлы элементов с дочерними элементами =>

    {"Element":{"Element":"text node"} } //t1
    
  • Узлы элементов со смешанными дочерними элементами (элемент + пробел) =>

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

Ссылки

...