0


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

为什么从不调用 return ?

4

1 回答 1

0

好吧,您将检查封闭XmlPullParser.END_DOCUMENT在一个循环中,该循环仅在 eventType is notXmlPullParser.END_DOCUMENT时运行,因此它永远不会运行该语句。

你需要 if(eventType == XmlPullParser.END_DOCUMENT) {}在循环之外。

编辑:我看到了你的编辑。呵呵,还没有检测到文件的结尾?

尝试重组循环使用while(true),并把

else if(eventType == XmlPullParser.END_DOCUMENT) {
//Do stuff here
break;
}

循环内。

这样,它会遍历整个列表,并且仅在到达 END_DOCUMENT 时才离开循环。如果无限循环,那么我没有想法:P。

于 2013-04-21T22:41:05.990 回答