how do I extract text from a nested xml using xmlpullparser in android?

前端 未结 2 1032
谎友^
谎友^ 2021-01-05 13:47

 
  text
     
     text1
     
     
     text2
     
  text3
 
 

        
相关标签:
2条回答
  • 2021-01-05 14:26

    Have you had a look at the Android documentation for XMLPullParser? It pretty easy to follow. Let us know if that solves your problem.

    0 讨论(0)
  • 2021-01-05 14:28

    I parse similar xml files. Here is an example. You'll need to add error checking as appropriate.

    void loadXML(XmlPullParser xpp) {
        int eventType = xpp.next();
        while (eventType != XmlPullParser.END_DOCUMENT) {
            if (eventType == XmlPullParser.START_TAG && 0 == XML_ELEMENT_TAG.compareTo(xpp.getName())) {
                loadElement(xpp);
            }
    
            eventType = xpp.next();   
        }
    }
    
    private void loadElement(XmlPullParser xpp) {
    
        int eventType = xpp.getEventType();
        if ( eventType == XmlPullParser.START_TAG && 0 == XML_ELEMENT_TAG.compareTo(xpp.getName()) ) {
            eventType = xpp.next();
            while ( eventType != XmlPullParser.END_TAG || 0 != XML_ELEMENT_TAG.compareTo(xpp.getName()) ) {
                if (eventType == XmlPullParser.START_TAG &&     0 == XML_ITEM_TAG.compareTo(xpp.getName())) {
                    loadItem(xpp);
                }
    
                eventType = xpp.next();   
            }
        } 
    }
    
    private void loadItem(XmlPullParser xpp) {
    
        int eventType = xpp.getEventType();
        if ( eventType == XmlPullParser.START_TAG && 0 == XML_ITEM_TAG.compareTo(xpp.getName()) ) {
    
            eventType = xpp.next();
            while ( eventType != XmlPullParser.END_TAG || 0 != XML_ITEM_TAG.compareTo(xpp.getName()) ) {
    
                // Get attributes.
                String  attr = xpp.getAttributeValue(null, XML_MY_ATTR); 
                String  text = null;
    
                // Get item text if present.
                eventType = xpp.next();
                while ( eventType != XmlPullParser.END_TAG || 0 != XML_ITEM_TAG.compareTo(xpp.getName()) ) {
                    if ( eventType == XmlPullParser.TEXT ) {
                        text = xpp.getText();
                    } 
    
                    eventType = xpp.next();
                }
    
                eventType = xpp.next();   
            }
        } 
    }
    
    0 讨论(0)
提交回复
热议问题