Question

i am trying to parse the following xml file using Dom parser.but i am getting the first three Tags (Date, Breakfast,Lunch).how to get all Date,Breakfast and Lunch Tags.

-<Content>
  <Date>2/4/2013</Date>
  <Breakfast>WG Biscuit, Grits, sausage patty, fruit, juice, milk</Breakfast>
  <Lunch>Chicken tenders with sauce, WG affle stick and syrup, carrots-MC, romaine garden salad, fruit, juice, milk</Lunch>
  <Date>2/5/2013</Date>
  <Breakfast>grilleed cheese sandich, grits, fruit, juice, milk</Breakfast>
  <Lunch>meat sauce w/WG pasta, green beans, caesar salad, WW garlic toast, fruit, juice, milk</Lunch>
  <Date>2/6/2013</Date>
  <Breakfast>WG biscuit with chicken patty, fruit, juice, milk</Breakfast>
  <Lunch>WG pizza, spinach salad, WKcorn, fruit, juice, milk</Lunch>
  <Date>2/7/2013</Date>
  <Breakfast>WG french toast sticks (4), sausage links, fruit, juice, milk</Breakfast>
  <Lunch>salisbury steak, black eyed peas, creamed potatoes with gravy, greens-MC, spring mixed salad, WW cornbread, fruit, juice, milk</Lunch>
  <Date>2/8/2013</Date>
  <Breakfast>WG breakfast bagel, yogurt, fruit, juice, milk</Breakfast>
  <Lunch>BBQ rib portion on WG bun, sweet potato fries or yams, romaine garden salad, fruit, juice, milk</Lunch>
  <Date>2/11/2013</Date>
  <Breakfast>Mardi Gras Holiday - No School</Breakfast>
  <Lunch/>
</Content> 

i am using the following code:

StringBuilder sb=new StringBuilder(arg0[0]);
             String findlink=sb.toString();
             try{
                    HttpClient client=new DefaultHttpClient();
                    HttpGet request=new HttpGet();
                    request.setURI(new URI(findlink)) ;

                    HttpResponse response=client.execute(request);
                    //et.setText("its working"); 
                 DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();

                 DocumentBuilder Builder=factory.newDocumentBuilder();
                 dom=Builder.parse(response.getEntity().getContent());
                 dom.getDocumentElement().normalize();
                  nList5=dom.getElementsByTagName("Content");
                    for(int temp=0;temp<nList5.getLength();temp++)
                    {
                         Node nNode=nList5.item(temp);
                         if(nNode.getNodeType()==Node.ELEMENT_NODE)
                         {
                                    Element eElement=(Element)nNode;
                                    String  base1 =getTagValue("Date",eElement);
                                    Date.add(base1);
                                    String  base2 =getTagValue("Breakfast",eElement);
                                    Breakfast.add(base2);
                                    String  base3 =getTagValue("Lunch",eElement);
                                    Lunch.add(base3);


                          }
                    }

how to parse all tags under content.help me in doing this.

Was it helpful?

Solution

first make sure that your XML data is formatted I mean it should not miss any tag closing and braces <> use any online XML formator to validate your XML. after this try following code.

XMLParser Function

/**
 * Getting XML DOM element
 * 
 * @param XML
 *            string
 * */
public Document getDomElement(String xml) {
    Document doc = null;
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

    dbf.setCoalescing(true);
    try {

        DocumentBuilder db = dbf.newDocumentBuilder();

        InputSource is = new InputSource();
        is.setCharacterStream(new StringReader(xml));
        doc = db.parse(is);

    } catch (ParserConfigurationException e) {
        Log.e("Error: ", e.getMessage());
        return null;
    } catch (SAXException e) {
        Log.e("Error: ", e.getMessage());
        return null;
    } catch (IOException e) {
        Log.e("Error: ", e.getMessage());
        return null;
    }

    return doc;

}

getting NODE Value.

/**
 * Getting node value
 * 
 * @param Element
 *            node
 * @param key
 *            string
 * */
public String getValue(Element item, String str) {
    NodeList n = item.getElementsByTagName(str);
    return this.getElementValue(n.item(0));
}

}

call above function like this

            Document doc = parser.getDomElement(yourXMLString);
            NodeList nl = doc.getElementsByTagName("Content");

            for (int i = 0; i < nl.getLength(); i++) {

                Element e = (Element) nl.item(i);

                // Get your Data Here

                                String  base1 =getTagValue("Date",eElement);
                                Date.add(base1);
                                String  base2 =getTagValue("Breakfast",eElement);
                                Breakfast.add(base2);
                                String  base3 =getTagValue("Lunch",eElement);
                                Lunch.add(base3);

        }

Change your XML Like this

<Contents>
<content>
<Date>2/4/2013
</Date>
<Breakfast>WG Biscuit, Grits, sausage patty, fruit, juice, milk
</Breakfast>
<Lunch>Chicken tenders with sauce, WG affle stick and syrup, carrots-MC, romaine garden salad, fruit, juice, milk
</Lunch>
</content>
<content>
<Date>2/5/2013
</Date>
<Breakfast>grilleed cheese sandich, grits, fruit, juice, milk
</Breakfast>
<Lunch>meat sauce w/WG pasta, green beans, caesar salad, WW garlic toast, fruit, juice, milk
</Lunch>
</content>
<content>
<Date>2/6/2013
</Date>
<Breakfast>WG biscuit with chicken patty, fruit, juice, milk
</Breakfast>
<Lunch>WG pizza, spinach salad, WKcorn, fruit, juice, milk
</Lunch>
</content>
<content>
<Date>2/7/2013
</Date>
<Breakfast>WG french toast sticks (4), sausage links, fruit, juice, milk
</Breakfast>
<Lunch>salisbury steak, black eyed peas, creamed potatoes with gravy, greens-MC, spring mixed salad, WW cornbread, fruit, juice, milk
</Lunch>
</content>
<content>
<Date>2/8/2013
</Date>
<Breakfast>WG breakfast bagel, yogurt, fruit, juice, milk
</Breakfast>
<Lunch>BBQ rib portion on WG bun, sweet potato fries or yams, romaine garden salad, fruit, juice, milk
</Lunch>
</content>
<content>
<Date>2/11/2013
</Date>
<Breakfast>Mardi Gras Holiday - No School
</Breakfast>
<Lunch />
</content>
</Contents>

and call this NodeList nl = doc.getElementsByTagName("Content");

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top