一个符合xml规范的document
<hotels>
<hotel id="B01">
<name>酒店一</name>
<place>南京</place>
<time>1</time>
<price>100</price>
</hotel><hotel id="B02">
<name>酒店二</name>
<place>苏州</place>
<time>1</time>
<price>110</price>
</hotel>
</hotels>如果想取出name为酒店二的内容,怎么实现?
<hotels>
<hotel id="B01">
<name>酒店一</name>
<place>南京</place>
<time>1</time>
<price>100</price>
</hotel><hotel id="B02">
<name>酒店二</name>
<place>苏州</place>
<time>1</time>
<price>110</price>
</hotel>
</hotels>如果想取出name为酒店二的内容,怎么实现?
解决方案 »
- 点上下排序问题.....
- 鼠标经停时间用Dreamweaver编辑后预览能实现,转为jsp后无法实现
- 关于注册时激活邮件收不到的问题
- There is no Action mapped for namespace / and action name
- struts2 树形菜单<sx:treenode>出现乱码
- tomcat 5.5.15 想配置root应用下可以使用的数据连接池,该如何处理?
- 100分赠送!超值!
- jspsmartupload+weblogic 在线!
- 我的第一个hibernate程序,快吐血了
- EJB菜鸟级问题,我有分可捐赠,那位要请在这里说
- Spring管理Session何时打开何时关闭?使用getHibernateTemplate()时如何解决nosession问题?
- 求一个算法思路,高分等待!考验大牛们!
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.w3c.dom.Node;
public class DomParseService {
public List<Hotel> getHotel(File inputStream) throws Exception{
List<Hotel> list = new ArrayList<Hotel>();
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
//Document document = builder.parse(inputStream);
Document document = builder.parse(inputStream);
Element element = document.getDocumentElement();
NodeList HotelNodes = element.getElementsByTagName("hotel");
for(int i=0;i<HotelNodes.getLength();i++){
Element HotelElement = (Element) HotelNodes.item(i);
Hotel Hotel = new Hotel();
Hotel.setId(HotelElement.getAttribute("id"));
NodeList childNodes = HotelElement.getChildNodes();
// System.out.println("*****"+childNodes.getLength());
for(int j=0;j<childNodes.getLength();j++){
if(childNodes.item(j).getNodeType()==Node.ELEMENT_NODE){
if("name".equals(childNodes.item(j).getNodeName())){
Hotel.setName(childNodes.item(j).getFirstChild().getNodeValue());
}else if("place".equals(childNodes.item(j).getNodeName())){
// Hotel.setPrice(Float.parseFloat(childNodes.item(j).getFirstChild().getNodeValue()));
Hotel.setPlace(childNodes.item(j).getFirstChild().getNodeValue());
} else if("time".equals(childNodes.item(j).getNodeName())){
Hotel.setTime(Integer.parseInt(childNodes.item(j).getFirstChild().getNodeValue()));
}else if("price".equals(childNodes.item(j).getNodeName())){
Hotel.setPrice(Integer.parseInt(childNodes.item(j).getFirstChild().getNodeValue()));
}
}
}//end for j
list.add(Hotel);
}//end for i
return list;
}
public static void main (String args[]) throws Exception
{
// InputStream input = getClass().getClassLoader().getResourceAsStream("hotels.xml");
File input = new File("d:\\hotels.xml");
DomParseService dom = new DomParseService();
List<Hotel> hotels = dom.getHotel(input);
for(Hotel hotel : hotels){
if(hotel.getName().equals("酒店二"))
{
System.out.println("取出name为酒店二的内容如下:");
System.out.println("id="+hotel.getId());
System.out.println(hotel.getName());
System.out.println(hotel.getPlace());
System.out.println(hotel.getTime());
}
}
}
} Hotel.java用来组装数据和盛放数据
package com.xml;
/*
<hotel id="B02">
<name>酒店二</name>
<place>苏州</place>
<time>1</time>
<price>110</price>
</hotel> */
public class Hotel {
private String id;//存放hotel的id属性
private String name;
private String place;
int time;
int price;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPlace() {
return place;
}
public void setPlace(String place) {
this.place = place;
}
public int getTime() {
return time;
}
public void setTime(int time) {
this.time = time;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
D盘目录下一个hotels.xml
内容如下:
<?xml version="1.0" encoding="GB2312"?>
<hotels>
<hotel id="B01">
<name>酒店一</name>
<place>南京</place>
<time>1</time>
<price>100</price>
</hotel><hotel id="B02">
<name>酒店二</name>
<place>苏州</place>
<time>1</time>
<price>110</price>
</hotel>
</hotels>