【问题标题】:XmlPullParser XML on AndroidAndroid 上的 XmlPullParser XML
【发布时间】:2012-07-17 16:04:19
【问题描述】:

我正在尝试从 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。示例 URL 在浏览器中运行良好。有什么想法吗?

【问题讨论】:

标签: android xml parsing


【解决方案1】:

只有在eventType == XmlPullParser.START_TAG 时才执行xpp.next()。 将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  

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-21
    • 1970-01-01
    • 1970-01-01
    • 2017-01-26
    • 1970-01-01
    • 2013-04-15
    相关资源
    最近更新 更多