Skip to content Skip to sidebar Skip to footer

SAXParser Android, ArrayList Repeating Elements

I am currently just trying to process the elements within the item nodes. I am just focusing on the title at this point for simplicity, but I am finding that when it parses, I am j

Solution 1:

The reason you are getting the same value thrice is because you are creating the object when there is a channel tag in startElement method.

    if (localName.equals("channel")) {
        item = new ItemData();
    }

I guess you should initiate the object whenever there is a item tag as below

    if (localName.equals("item")) { // check for item tag
        item = new ItemData();
    }

Solution 2:

Remodify your whole project, you need 3 classes :

1.ItemList 2.XMLHandler extends Default handler 3.SAXParsing activity

Make your code organized first

In your XMLHandler class extend default handler your code should look like

public class MyXMLHandler extends DefaultHandler
{
public static ItemList itemList;
public boolean current = false;
public String currentValue = null;

@Override
public void startElement(String uri, String localName, String qName,
        Attributes attributes) throws SAXException {
    // TODO Auto-generated method stub

    current = true;

    if (localName.equals("channel"))
    {
        /** Start */ 
        itemList = new ItemList();

    } 
}

@Override
public void endElement(String uri, String localName, String qName)
        throws SAXException {
    // TODO Auto-generated method stub
    current = false;

    if(localName.equals("item"))
    {
        itemList.setItem(currentValue);
    }
    else if(localName.equals("title"))
    {
        itemList.setManufacturer(currentValue);
    }

}

@Override
public void characters(char[] ch, int start, int length)
        throws SAXException {
    // TODO Auto-generated method stub

    if(current)
    {
        currentValue = new String(ch, start, length);
        current=false;
    }
}
} 

ItemList class is used to set , setter and getter methods to pass in values of arraylist and retrieve those array lists in the SAXParsing activity.

I hope this solution helps. :D


Post a Comment for "SAXParser Android, ArrayList Repeating Elements"