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.
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");