我正在尝试使用Dom解析器解析以下xml文件。但我得到前三个标签 (日期,早餐,午餐)。如何获取所有日期,早餐和午餐标签。
-<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>
我使用以下代码:
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);
}
}
如何解析content.help下的所有标签。
答案 0 :(得分:0)
首先确保您的XML数据已格式化我的意思是它不应该错过任何标记结束并且大括号<>
使用任何在线XML formator
来验证您的XML。在此之后尝试以下代码。
XMLParser函数
/**
* 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;
}
获得NODE值。
/**
* 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));
}
}
调用上面的函数
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);
}
像这样更改XML
<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>
并调用此NodeList nl = doc.getElementsByTagName("Content");