2013-04-12 38 views
2

我想在Android中使用Pull Parser来获取image2和image3的值。如何在Pull Parser for Android中使用匹配标签获取XML内容?

<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; 
... 

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

+0

不它似乎更有意义,存储在列表中的图像的URL,而不是独立的变量?无论如何,对于你当前的代码,你应该只有一个'tagname.equalsIgnoreCase(“picture”)'条件(在第一个'if'永远不会运行之后的任何东西)并且保持你已经处理了多少url的运行计数,然后您可以使用它来调用适当的设置器。 –

+0

+1。保留一个列表变量,并附加您使用“图片”标签运行的URL。 – dmon

回答

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)); 
+0

谢谢你的回答!我知道这是正确的。我只是遇到了麻烦实施它。 – luckyreed76

相关问题