как разобрать группу тегов из xml в Android?

#android #xml-parsing

#Android #xml-синтаксический анализ

Вопрос:

Люди,

это мой XML-ответ:

 <parent>
<child>
<name>
<age>
</child>
<child>
<name>
<age>
</child>
...</parent>
  

мне нужно проанализировать каждый дочерний контент в виде XML-строки, которая:

Требуется вывод:

 <child>
<name>
<age>
</child>
  

я также использовал метод normalize. но все же я сталкиваюсь с проблемой получения правильного вывода.

мой код:

 NodeList nodes = document.getElementsByTagName("child");// here documentobject is the Document of my xml.

for (int i = 0; i < nodes.getLength(); i  ) {
    Node element = nodes.item(i);
    // nodes.item(i).normalize();    
    System.out.println(nodes.item(i).getNodeValue());
}
  

Есть идеи?

Комментарии:

1. если вы знаете, что такое sax … ознакомьтесь с этим инструментом: sherifandroid.blogspot.com/2011/10/sax-class-generator-v10.html

2. @Sherif: я работаю над анализатором DOM.

3. это то, что я получаю в logcat «11-10 18:56:19.325: INFO/ System.out(17645): org.apache.harmony.xml.dom. DocumentImpl@405ef4e0».

Ответ №1:

Для этого вы хотите использовать getTextContent() not getNodeValue() ….

 NodeList nodes = doc.getElementsByTagName("child");
        for (int i = 0; i < nodes.getLength(); i  ) {           
            if (nodes.item(i).getNodeType() == Node.ELEMENT_NODE) {
                NodeList msgChildren = nodes.item(i).getChildNodes();
                for (int j = 0; j < msgChildren.getLength(); j  ) {
                    if (msgChildren.item(j).getNodeType() == Node.ELEMENT_NODE) {
                        Element e = (Element) msgChildren.item(j);
                        System.out.println("<" e.getNodeName() ">");
                        System.out.println(e.getTextContent());
                        System.out.println("</" e.getNodeName() ">");                        
                    }
                }
            }
        }
  

Ответ №2:

Проверьте приведенный ниже фрагмент :

         NodeList items_records = element.getElementsByTagName("child");
            for (int a = 0; a < items_records.getLength(); a  ) {
                Node item_records = items_records.item(a);
                NodeList properties_records = item_records.getChildNodes();
                for (int b = 0; b < properties_records.getLength(); b  ) {
                    Node property_records = properties_records.item(b);
                    String name_records = property_records.getNodeName();

                    try{
                        if (name_records.equalsIgnoreCase("name")) {
                           parsed_total_records_value = property_records.getFirstChild().getNodeValue(); 
                           Log.v("parsed_total_records_value",parsed_total_records_value);
                        }
                    }catch(Exception e){
                }   
            }
        }
  

Комментарии:

1. это делается для анализа имени nodeValue. но мой вывод будет таким » <имя> venky</name><возраст> 25</age>».

2. @SACPK Если возможно, дайте свою веб-ссылку, я покажу вам, как анализировать.