XMLPullParser android冒号标签

时间:2016-02-08 16:13:02

标签: java android xml parsing xmlpullparser

我发现了几个关于名称问题的问题,但无法使其中任何一个问题起作用。我想要的是获取媒体的网址:缩略图标签:

<media:thumbnail width="144" height="81" url="http://c.files.bbci.co.uk/6013/production/_88159542_3e6f2bc3-16a3-407d-9e07-62bae1fa755e.jpg"/>

在此类标记的示例上方

private void handleText(String text) {
            String xmlText = text;
            if (currentEntry != null && currentTag != null) {
                if (currentTag.equals(TITLE)) {
                    currentEntry.setTitle(xmlText);
                } else if (currentTag.equals(DESC)) {
                    currentEntry.setDescription(xmlText);
                } else if (currentTag.equals(LINK)) {
                    currentEntry.setLink(xmlText);
                } else if (currentTag.equals(IMAGE)) {
                    currentEntry.setImage("test");
                }
            }
        }

我尝试了几件事:

xpp.getAttributeValue(null,&#34; url&#34;);并将图像设置为。但是我注意到我甚至没有进入那个if if子句。我在IMAGE变量上尝试了几个值,如:

  • media:thumbnail
  • 媒体
  • 缩略图

我还设置了名称空间感知:

factory.setNamespaceAware(true);

我做错了什么?

解析器:

XmlPullParser xpp;
int eventType;

protected List<Entry> doInBackground(String... string) {
    try {

        XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
        factory.setNamespaceAware(true);
        xpp = factory.newPullParser();
        xpp.setInput(getInputStream(new URL("http://feeds.bbci.co.uk/news/technology/rss.xml?edition=uk")), "UTF_8");

        eventType = xpp.getEventType();
        while (eventType != XmlPullParser.END_DOCUMENT) {
            if (eventType == XmlPullParser.START_TAG) {
                handleStartTag(xpp.getName());
            } else if (eventType == XmlPullParser.END_TAG) {
                currentTag = null;
            } else if (eventType == XmlPullParser.TEXT) {
                handleText(xpp.getText());
            }
            eventType = xpp.next();
        }

    } catch (Resources.NotFoundException e) {
        Log.d(LOGTAG, e.getMessage());
    } catch (XmlPullParserException e) {
        Log.d(LOGTAG, e.getMessage());
    } catch (IOException e) {
        Log.d(LOGTAG, e.getMessage());
    }

    return entries;
}

1 个答案:

答案 0 :(得分:0)

我修好了。我把它解析的开始标记系统化了,它显示为:thumbnail。所以我改变了我的IMAGE常量,使其具有“thumbnail”的值。它从未出现在thumbnail子句中,因为handleText方法只处理标记中的已找到文本。由于media:thumbnail没有文本属性,我需要在handleStartTag方法中处理它。在那里我可以说当前标签名称等于“thumbnail”获取url和setImage的属性值作为该值。