<?xml version="1.0" encoding="UTF-8"?>
<books>
<book id="b001">
<title>Java 核心技术</title>
<price>98</price>
</book>
<book id="b002">
<title>Thinking in Java</title>
<price>220</price>
</book>
</books>
Books.java
package cn.ouc.xml;
public class Books {
private String id ;
private String title ;
private String price ;
public Books() {
}
public Books(String id,String title,String price) {
super();
this.id = id;
this.title = title;
this.price = price;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
@Override
public String toString() {
return "Books [id=" + id + ",title=" + title + ",price=" + price
+ "]";
}
}
package cn.ouc.xml.dom;
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.Node;
import org.w3c.dom.NodeList;
import cn.ouc.xml.Books;
public class Dom {
public static void main(String[] args) throws Exception {
System.out.println(getAllBook());
}
/*
* 获得所有的书籍,将所有的书籍内容保存list
*/
public static List getAllBook() throws Exception{
//创建list,用于保存所有的数据
List allBookList = new ArrayList();
/* 从xml文档中将需要的数据,查询出来,替换模拟数据 */
//获得实例工厂
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
//获得解析
DocumentBuilder builder = factory.newDocumentBuilder();
//获得document --解析xml文档 java.io.FileNotFoundException
Document document = builder.parse("books.xml"); //指java项目的根路径下的文件
//获得所有的书籍元素
NodeList bookElements = document.getElementsByTagName("book");
//遍历所有的书籍元素
for(int i = 0 ; i < bookElements.getLength() ; i++){
//获得每一本书籍元素
Node node = bookElements.item(i);
// node.getAttributes(); --获得所有的属性
Element bookEle = (Element)node;
//获得指定名称id,的属性值
String id = bookEle.getAttribute("id");
String title = "";
String price = "";
//将title和price查询
//获得当前book元素的所有的子节点
NodeList childList = bookEle.getChildNodes();
System.out.println( id + ":" + childList.getLength());
//遍历所有的孩子
for(int c = 0 ; c < childList.getLength() ; c++){
//获得所有的孩子
Node childNode = childList.item(c);
//Element child = (Element)childNode; //java.lang.ClassCastException:
//获得节点名称
String childName = childNode.getNodeName();
//判断是否title
//if(childName.equals("title"))
if("title".equals(childName)){
//获得title内容
title = childNode.getTextContent();
}
//判断是否是price
if("price".equals(childName)){
price = childNode.getTextContent();
}
}
//创建JavaBean Book对象
Books book = new Books();
book.setId(id);
book.setPrice(price);
book.setTitle(title);
//将保存所有数据的对象Book添加到list中
allBookList.add(book);
}
return allBookList;
}
}