Android:从未调用过XMLPullParser.END_DOCUMENT事件

时间:2013-04-21 22:37:28

标签: android xmlpullparser


尝试使用 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";

为什么回复从未被召唤?

1 个答案:

答案 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。