2
My xml is as follows...In this how can I get NAME attribute from status tag using DOM xml   
parsing...

 <tickets type="array">
    <ticket>
           <ticket-id type="integer">6</ticket-id>
           <status>
               <id type="integer">1706729</id>
               <name>Completed</name>
               <colour>black</colour>

           </status>
    </ticket>

    <ticket>
           <ticket-id type="integer">5</ticket-id>
           <status>
               <id type="integer">1706929</id>
               <name>New</name>
               <colour>White</colour>

           </status>
    </ticket>
</tickets>
5
  • androidhive.info/2011/11/android-xml-parsing-tutorial Commented Dec 24, 2012 at 7:23
  • Thanx for replay..but look at my xml it is nested..and tutorial you suggest me contains simple xml. Commented Dec 24, 2012 at 7:45
  • Use getElementbyTag("ticket") one time & make a loop & after that again use inside loop getElementbyTag("status") & get all values which you want Commented Dec 24, 2012 at 7:49
  • I tried it but not workindg...can you put some sample code ? Commented Dec 24, 2012 at 8:02
  • give url for this xml then i'll try Commented Dec 24, 2012 at 8:10

1 Answer 1

2

This way you should be able to get what you are looking for

String xml = "<tickets type=\"array\"><ticket><ticket-id type=\"integer\">6</ticket-id><status><id type=\"integer\">1706729</id><name>Completed</name><colour>black</colour></status></ticket><ticket><ticket-id type=\"integer\">5</ticket-id><status><id type=\"integer\">1706929</id><name>New</name><colour>White</colour></status></ticket></tickets>";
            Log.e("xml parsing ", xml);
            try {
                DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
                domFactory.setNamespaceAware(true);
                domFactory.setIgnoringComments(true);
                domFactory.setIgnoringElementContentWhitespace(true);
                domFactory.setCoalescing(true);
                DocumentBuilder domBuilder = null;
                Document document = null;

                try {
                    domBuilder = domFactory.newDocumentBuilder();
                }
                catch (ParserConfigurationException parserConfigurationException) {
                    Logger.log(Logger.LEVEL_ERROR, FrameworkHelper.class.getName(), "getDocumentRoot", "ParserConfigurationException caught while creating DocumentBuilder object, " + parserConfigurationException.getMessage());
                }

                document = domBuilder.parse(new ByteArrayInputStream(xml.getBytes()));//try catch
                NodeList ticketList = document.getElementsByTagName("ticket");
                for (int i = 0; i < ticketList.getLength(); i++) {
                  Element ticketNode = (Element) ticketList.item(i);
                  String tickets = ticketNode.getNodeValue();
                  NodeList statusList = ticketNode.getElementsByTagName("status");
                  for (int j = 0; j < statusList.getLength(); j++) {
                    Element statusNode = (Element) statusList.item(j);
                    String statuses = statusNode.getNodeValue();
                    NodeList nameList = statusNode.getElementsByTagName("name");
                    for (int k = 0; k < nameList.getLength(); k++) {
                      Element nameNode = (Element) nameList.item(k);
                      String names = nameNode.getChildNodes().item(0).getNodeValue();
                      Toast.makeText(this, "name: " + names,
                            Toast.LENGTH_SHORT).show();
                    }
                  }
                }
            } catch (SAXException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

However if hierarchy is not important to be maintained and you just want to deal with names independently you can as well directly call getElementsByTagName("name")

Sign up to request clarification or add additional context in comments.

1 Comment

kettu, i have edited my code above , please check and confirm!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.