How to extract text from nested xml using xmlpullparser in android?

<doc> <element> text <item> text1 </item> <item> text2 </item> text3 </element> <element> another text </element> ... </doc> 

And I want to extract the text into a string as follows:

  "text text1 text2 text3" 

The tags "item" are nested inside the "element"

Im using xmlpullparser on Android, but I could use any other parser if that makes things easier. TX.

+5
android xml nested xmlpullparser
source share
2 answers

I am parsing similar xml files. Here is an example. You will need to add error checking if necessary.

 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(); } } } 
+12
source share

Have you looked at the Android documentation for XMLPullParser ? It is pretty easy to follow. Let us know if this solves your problem.

-3
source share

All Articles