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_DOCUMENTeventType が not の場合にのみ実行されるループでcheck for を囲んでいるためXmlPullParser.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 に答える