尝试使用 XMLPullParser 时,永远不会调用XmlPullParser.END_DOCUMENT
事件,因此假设在执行while循环后执行的代码。我怎样才能防止这种情况发生?
代码段:
int eventType = xpp.getEventType();
if(eventType == XmlPullParser.END_DOCUMENT) {
Log.i("app", "End");
return farmers.getFarmers();
}
while (eventType != XmlPullParser.END_DOCUMENT) {
if(eventType == XmlPullParser.START_DOCUMENT) {
} else if(eventType == XmlPullParser.START_TAG) {
// Do something
} else if(eventType == XmlPullParser.END_TAG) {
// Do something
} else if(eventType == XmlPullParser.TEXT) {
// Do something
}
eventType = xpp.next();
}
if(eventType == XmlPullParser.END_DOCUMENT) {
Log.i("app", "End");
return farmers.getFarmers();
}
return "Some data";
为什么回复从未被召唤?
答案 0 :(得分:0)
好吧,你将XmlPullParser.END_DOCUMENT
的检查括在一个只在eventType不是XmlPullParser.END_DOCUMENT
的情况下运行的循环中,所以它永远不会运行那个语句。
你需要
循环外if(eventType == XmlPullParser.END_DOCUMENT) {}
。
编辑:我看到了你的编辑。嗯,还没有检测到文件的结尾?。
尝试重构循环以使用while(true)
,然后输入
else if(eventType == XmlPullParser.END_DOCUMENT) {
//Do stuff here
break;
}
在循环中。
这样,它会遍历整个列表,并且只有在达到END_DOCUMENT时才会离开循环。如果无限循环,那么我就没有想法了:P。