在Android XmlPullParser XML(XmlPullParser XML on An

2019-09-19 15:23发布

我试图解析从Android的一些XML。 下面是一个位XML的例子:

<updates at="1342481821" found="616" sorting="latest_updates" showing="Last 4D">
<show>
    <id>
        3039
    </id>
    <last>
        -14508
    </last>
    <lastepisode>
        -14508
    </lastepisode>
</show>
<show>
    <id>
        30612
    </id>
    <last>
        -13484
    </last>
    <lastepisode>
        163275
    </lastepisode>
</show>   

等等....

这是实际的代码:

try {
    XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
    factory.setNamespaceAware(true);
    XmlPullParser xpp = factory.newPullParser();
    URL url = new URL("http://services.tvrage.com/feeds/last_updates.php?hours=" + hours);
    InputStream stream = url.openStream();
    xpp.setInput(stream, null);
    int eventType = xpp.getEventType();

    while (eventType != XmlPullParser.END_DOCUMENT) {
        if (eventType == XmlPullParser.START_DOCUMENT) {
        } 
        else if (eventType == XmlPullParser.END_DOCUMENT) {
        } 
        else if (eventType == XmlPullParser.START_TAG) {
            if (xpp.getName().equalsIgnoreCase("id")) {
                showIds.add(Integer.parseInt(xpp.nextText()));
            } 
            else if (eventType == XmlPullParser.END_TAG) {
            } 
            else if (eventType == XmlPullParser.TEXT) {
            }
            eventType = xpp.next();
        }
    }
} catch   

... 等等

这给了没有结果,并且eventType始终是0调试器。 这个例子网址在浏览器中正常工作。 有任何想法吗?

Answer 1:

您只执行xpp.next()eventType == XmlPullParser.START_TAG 。 移动xpp.next这一条线下来,它总是执行。

while (eventType != XmlPullParser.END_DOCUMENT) {
        if (eventType == XmlPullParser.START_DOCUMENT) {
        } 
        else if (eventType == XmlPullParser.END_DOCUMENT) {
        } 
        else if (eventType == XmlPullParser.START_TAG) {
            if (xpp.getName().equalsIgnoreCase("id")) {
                showIds.add(Integer.parseInt(xpp.nextText()));
            } 
            else if (eventType == XmlPullParser.END_TAG) {
            } 
            else if (eventType == XmlPullParser.TEXT) {
            }
            // eventType = xpp.next(); <-- remove it
        }
        eventType = xpp.next(); // <-- move here
    }
} catch  


文章来源: XmlPullParser XML on Android