如何在Pull Parser for Android中使用匹配的标签获取XML内容?

时间:2013-04-12 04:23:13

标签: android xml-parsing rss imageview xmlpullparser

我正在尝试使用Android中的Pull Parser来获取image2和image3的值。

<item>
<title>Title Goes Here!</title>
<picture><![CDATA[http://blahblah.image.jpg]]></picture>
<picture><![CDATA[http://blahblah.image2.jpg]]></picture>
<picture><![CDATA[http://blahblah.image3.jpg]]></picture>
</item>


...
case XmlPullParser.END_TAG
if (tagname.equalsIgnoreCase("item")
_feed.addItem(_item);
} else if (tagname.equalsIgnoreCase("title")) {
_item.setTitle(theString)
} else if (tagname.equalsIgnoreCase("picture")) {
_item.setLargeImage(theString)
} else if (tagname.equalsIgnoreCase("picture")) {
_item.setLargeImage2(theString)
} else if (tagname.equalsIgnoreCase("picture")) {
_item.setLargeImage3(theString)
}
break;
...

我可以解析并加载第一张图片,但是,我不知道下一步是什么来获取其他图片?谢谢您的帮助。

1 个答案:

答案 0 :(得分:2)

您的代码中存在逻辑错误:

} else if (tagname.equalsIgnoreCase("picture")) {
    _item.setLargeImage(theString)
} else if (tagname.equalsIgnoreCase("picture")) {
    _item.setLargeImage2(theString)
} else if (tagname.equalsIgnoreCase("picture")) {
    _item.setLargeImage3(theString)
}

第二个和第三个else if条件测试之后的代码永远不会被执行,如果遇到的标记是picture,控制流将在第一个if (tagname.equalsIgnoreCase("picture"))结束。

您可以执行以下操作来实现您的目标:

List<String> imageList = new ArrayList<String>();
} else if (tagname.equalsIgnoreCase("picture")) {
    imageList.add(theString);
}

// after you finish parsing the xml file, set the image URLs on your item.
_item.setLargeImage(imageList.get(0));
_item.setLargeImage2(imageList.get(1));
_item.setLargeImage3(imageList.get(2));