xml pull parser assets xml
mixm,
I was toying with various ways to load a local file from both 'assets' and 'res', but to answer your question as asked (as no one else seems to have):
First, either make sure your XML is valid before testing or turn off validation, this is how you can do that and instantiate a pull parser at the same time:
try { XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); factory.setValidating(false); XmlPullParser myxml = factory.newPullParser();
Then open the xml file and set as input to your pull parser:
InputStream raw = getApplicationContext().getAssets().open("simple.xml"); myxml.setInput(raw, null);
Now setup your pull loop (or other, depends on whether you want to do deferred pulling or not, that's your design decisions:
int eventType = myxml.getEventType(); while(eventType != XmlPullParser.END_DOCUMENT) { if(eventType == XmlPullParser.START_DOCUMENT) { Log.d(MY_DEBUG_TAG, "In start document"); } else if(eventType == XmlPullParser.START_TAG) { Log.d(MY_DEBUG_TAG, "In start tag = "+myxml.getName()); } else if(eventType == XmlPullParser.END_TAG) { Log.d(MY_DEBUG_TAG, "In end tag = "+myxml.getName()); } else if(eventType == XmlPullParser.TEXT) { Log.d(MY_DEBUG_TAG, "Have text = "+myxml.getText()); } eventType = myxml.next(); } } catch (XmlPullParserException e) {
Note the myxml.getEventType()
, you need to do this to get the parse going and handle what type events you are pulling. Note: catch blocks omitted for readability.
Tested the above on 2.1, hope it helps-Frank