mixm,
我正在尝试各种方法来从“资产”和“资源”加载本地文件,但要按要求回答您的问题(因为其他人似乎没有):
首先,要么在测试之前确保您的 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()
,您需要执行此操作才能进行解析并处理您正在拉取的事件类型。注意:为了可读性,省略了 catch 块。
以上在2.1上测试过,希望有帮助
-坦率