mixm,
Я играл разными способами, чтобы загрузить локальный файл как из 'assets', так и из 'res', но чтобы ответить на ваш вопрос, как и было задано (как, кажется, никто другой):
Во-первых, либо убедитесь, что ваш XML действителен перед тестированием, либо отключите проверку, вот как вы можете это сделать и создать экземпляр парсера одновременно:
try {
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setValidating(false);
XmlPullParser myxml = factory.newPullParser();
Затем откройте файл xml и установите в качестве входных данных для вашего синтаксического анализатора:
InputStream raw = getApplicationContext().getAssets().open("simple.xml");
myxml.setInput(raw, null);
Теперь настройте ваш цикл извлечения (или другое, зависит от того, хотите ли вы выполнять отложенное вытягивание или нет, это ваши дизайнерские решения:
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) {
Обратите внимание на myxml.getEventType()
, вам нужно сделать это, чтобы запустить анализ и обработать события какого типа вы вызываете. Примечание: блоки захвата опущены для удобства чтения.
Протестировано выше на 2.1, надеюсь, это поможет
-Frank