2011-12-16 4 views
3

Я использую net.sf.json.xml.XMLSerializer для преобразования документов XML в JSON. Я получаю два разных результата для почти двух похожих документов XML. Мой код:Правила преобразования XML-JSON

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>.

Любая идея, что здесь происходит? Каково правило? Меня больше интересует, как заставить его последовательно распознавать массивы.

ответ

0

Правила:

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

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

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

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

Список литературы

 Смежные вопросы

  • Нет связанных вопросов^_^