xmlpullparser(), whats wrong with my code?
- by Avinazz
I am expecting output to be an array list filled with all items as "thought"
but instead, every time i add a value into arraylist, the previous value in list also gets update with new, hence resulting in duplicates. This behaviour goes on till end. Even though i have achieved the result by changing the approach, failure of my previous approach still bothers me. Any help or pointer will be really appreciated.
Below is xml snippet:
<Thoughts>
<country>
<name>India</name>
<item>
<itemId>1</itemId>
<itemDetailImage>detail.png</itemDetailImage>
<itemImage>image1.png</itemImage>
<itemDesc>Item Description 1</itemDesc>
<itemTitle>Item Title 1</itemTitle>
</item>
<item>
<itemId>2</itemId>
<itemDetailImage>detail2.png</itemDetailImage>
<itemImage>image2.png</itemImage>
<itemDesc>Item Description 2</itemDesc>
<itemTitle>Item Title 2</itemTitle>
</item>
<item>
<itemId>3</itemId>
<itemDetailImage>detail3.png</itemDetailImage>
<itemImage>image3.png</itemImage>
<itemDesc>Item Description 3</itemDesc>
<itemTitle>Item Title 3</itemTitle>
</item>
Below is a method for my trial and error:
private void printAll() throws XmlPullParserException, IOException{
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(false);
XmlPullParser parser = factory.newPullParser();
URL url = new URL("http://192.168.1.3/DefaultXML.xml");
URLConnection ucon = url.openConnection();
InputStream is = ucon.getInputStream();
parser.setInput(is, null);
int eventType = parser.getEventType();
String name;
while(eventType != parser.END_DOCUMENT){
if(eventType == parser.START_DOCUMENT){
Log.i(TAG,"Start document");
}else if (eventType == parser.START_TAG ) {
name = parser.getName();
if(name.equalsIgnoreCase(NAME)){
this.cName = new Country();
this.cName.setName(parser.nextText());
}else if(name.equalsIgnoreCase(ITEM_DESC)){
this.thought.setItemDesc(parser.nextText());
}else if (name.equalsIgnoreCase(ITEM_ID)) {
this.thought.setItemID(parser.nextText());
}else if (name.equalsIgnoreCase(ITEM_DETAIL_IMAGE)) {
this.thought.setItemDetailImage(parser.nextText());
}else if (name.equalsIgnoreCase(ITEM_IMAGE)) {
this.thought.setItemImage(parser.nextText());
}else if (name.equalsIgnoreCase(ITEM_TITLE)) {
this.thought.setItemTitle(parser.nextText());
}
}else if (eventType == parser.END_TAG) {
name = parser.getName();
if(name.equalsIgnoreCase(ITEM)) {
this.cName.setThought(this.thought);
ctry.add(cName);
this.thought = new Thought();
}
}
eventType = parser.next();
}
//Log.i(TAG,"---" + ctry.toString());
}