0

xml ファイルの解析に問題があります。解析中に最後の終了タグに到達しますが、END_DOCUMENT に到達することはありません。それは無限ループのようです!!! ただし、文字列の結果を「<foo>Hello World!</foo>」で変更すると、うまくいきます!!!

public void parseXMLData(String result) throws XmlPullParserException, IOException {
    XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
    factory.setNamespaceAware(true);
    factory.setFeature(XmlPullParser.FEATURE_PROCESS_DOCDECL, true);
    XmlPullParser xpp = factory.newPullParser();
    xpp.setInput( new StringReader ( result ) );
    int eventType = xpp.getEventType();

    String prefix = null, name = null, value = null;

    while (eventType != XmlPullParser.END_DOCUMENT) {

        switch(eventType) {
        case XmlPullParser.END_DOCUMENT: Log.i(TAG, "end document");
        break;
        case XmlPullParser.START_TAG : Log.i(TAG, "start tag"); Log.i(TAG, xpp.getName());
        break;
        case XmlPullParser.END_TAG : Log.i(TAG,"end tag"); Log.i(TAG, "end "+xpp.getName());
        break;
        case XmlPullParser.START_DOCUMENT : Log.i(TAG, "start document");
        break;
        case XmlPullParser.TEXT : Log.i(TAG, "text");
        break;
        case XmlPullParser.COMMENT:
        Log.i(TAG, "COMMENT");
        break;
        case XmlPullParser.DOCDECL:
        Log.i(TAG, "DOCDECL");
        break;
        case XmlPullParser.IGNORABLE_WHITESPACE:
        Log.i(TAG, "IGNORABLE_WHITESPACE");
        break;
        }
        eventType = xpp.next();
        Log.i(TAG, "next(): "+eventType);
    }

    Log.i(TAG, "Saiu do while");

    if(eventType == XmlPullParser.END_DOCUMENT) {
        Log.i(TAG, "end document");
    }


    showResults();
    //str_forecast = xpp.getText();


    Log.i(TAG, "Chamou showResults()");
    //return xpp.getText();
}

私の XML リソースはhttp://weather.yahooapis.com/forecastrss?w=455823&u=cです

ありがとう

4

2 に答える 2

1

では、無限に実行され、実際に何をしているのでしょうか? Log.i()その場合に備えて出力しない場合は、タグEND_DOCUMENTに遭遇するとすぐに終了するように while ループを設定したためです。END_DOCUMENT

于 2014-02-28T21:11:33.070 に答える
0

電話してみる

eventType=xpp.next();

それ以外の

eventType = xpp.nextToken();

于 2014-02-28T22:57:46.900 に答える