2013-04-12 4 views
2

Я пытаюсь использовать Pars Parser в Android для получения значений image2 и image3.Как получить XML-контент с соответствующими тегами в Pull Parser для Android?

<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