menu_on_top
menu_on_top

Reputation: 2613

Android Parse xml with DOM - same named tags

I have an rss feed where, in every item tag there are two tags named category. I want to get the value of the first one,but unfortunately i get the second one value. This is my code:

   // Create required instances
                DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
                DocumentBuilder db = dbf.newDocumentBuilder();

                // Parse the xml
                Document doc = db.parse(new InputSource(url.openStream()));
                doc.getDocumentElement().normalize();

                // Get all <item> tags.
                NodeList nl = doc.getElementsByTagName("item");
                int length = nl.getLength();

                // to length einai posa nea tha emfanisei.Edw tou lew ola pou
                // vriskei
                for (int i = 0; i < length; i++) {
                    Node currentNode = nl.item(i);
                    RSSItem _item = new RSSItem();

                    NodeList nchild = currentNode.getChildNodes();
                    int clength = nchild.getLength();

                    // Get the required elements from each Item
                    for (int j = 0; j < clength; j = j + 1) {

                        Node thisNode = nchild.item(j);
                        String theString = null;

                        if (thisNode != null && thisNode.getFirstChild() != null) {
                            theString = thisNode.getFirstChild().getNodeValue();

                        }

                        if (theString != null) {

                            String nodeName = thisNode.getNodeName();
                      ...
....
...

                            if ("category".equals(nodeName)) {

                                /*
                                 * NodeList nlList = nl.item(0).getChildNodes();
                                 * Node nValue2 = (Node) nlList.item(0);
                                 * _item.setCategory(nValue2.getNodeValue());
                                 */

                                _item.setCategory(theString);
                            }
                        }
                    }

EDIT:

My RSS feed is like:

<item>
<title>my title</title>
<category>Sports</category>
<category>World</category>
</item>

<item>
<title>my title 2</title>
<category>News</category>
<category>Showbiz</category>
</item>
...etc

Upvotes: 1

Views: 709

Answers (1)

ρяσѕρєя K
ρяσѕρєя K

Reputation: 132992

if you want to get first category from current item Nodes then use Element.getElementsByTagName("category") for getting all category nodes in NodeList and after that use NodeList.item(0) to get first category Element from NodeList do it as:

Element element = (Element) currentNode;
NodeList nodelist = element.getElementsByTagName("category");
Element element1 = (Element) nodelist.item(0);
NodeList category = element1.getChildNodes();
System.out.print("category : " + (category.item(0)).getNodeValue());

Upvotes: 2

Related Questions