http://blog.csdn.net/andie_guo/article/details/24844351
XML DOM节点树
XML DOM将XML文档作为树结构,树结构称为一个节点树。所有的节点可以通过树访问,它们的内容可以被修改或删除,也可以建立新的元素。节点树用于显示节点集和它们之间的联系。下图呈现的是books.XML文件的节点树。
常用的几个对象:
1)Element类:
是Node类最主要的子对象,被广泛使用,在元素中可以包含属性,因而Element中有存取其属性的方法。
2)Node类:
Node对象是DOM中最基本的对象,代表了文档树中的抽象节点。但在实际使用中很少会直接使用Node对象,而是使用Node对象的子对象Element,Attr,Text等。
3)NodeList类:
代表了一个包含一个或者多个Node的列表,根据操作可以将其简化的看做为数组。
DOM XML Parser 解析XML文件
Everyday Italian
Giada De Laurentiis
2005
30.00
Harry Potter
J K. Rowling
2005
29.99
XQuery Kick Start
James McGovern
Per Bothner
Kurt Cagle
James Linn
Vaidyanathan Nagarajan
2003
49.99
Learning XML
Erik T. Ray
2003
39.95
Book.java:该对象是一个实体Bean,其字段信息对应着xml文件里的元素字段,由于篇幅有限,读者自行生成get、set方法 。
packagecom.andieguo.xmldemo;public classBook {privateString category;privateString titleLang;privateString title;privateString author;privateInteger year;privateDouble price;
@OverridepublicString toString() {return "Book [category=" + category + ", title, title=" + title + ", author=" + author + ", year=" + year + ", price=" + price + "]";
}//生成字段的get、set方法
}
ReadXMLFile.java :解析XML文件并存入List集合。
packagecom.andieguo.xmldemo;importjava.io.File;importjava.util.ArrayList;importjava.util.List;importjavax.xml.parsers.DocumentBuilder;importjavax.xml.parsers.DocumentBuilderFactory;importorg.w3c.dom.Document;importorg.w3c.dom.Element;importorg.w3c.dom.Node;importorg.w3c.dom.NodeList;public classReadXMLFile {public static voidmain(String[] args) {
File file= new File("src/com/andieguo/xmldemo/books.xml");//books.xml文件应放在和ReadXMLFile.java同级的文件夹下
List books =readXMLFile(file);for(Book book : books) {
System.out.println(book.toString());
}
}public static ListreadXMLFile(File file) {
List lists = new ArrayList();try{
DocumentBuilderFactory dbFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder=dbFactory.newDocumentBuilder();
Document doc=dBuilder.parse(file);
NodeList bookList= doc.getElementsByTagName("book");for (int i = 0; i < bookList.getLength(); i++) {
Node bookNode=bookList.item(i);if (bookNode.getNodeType() ==Node.ELEMENT_NODE) {
Element bookElement=(Element) bookNode;
Book book= newBook();
book.setCategory(bookElement.getAttribute("category"));
Element titleElement= (Element) bookElement.getElementsByTagName("title").item(0);
book.setTitle(titleElement.getTextContent());
book.setTitleLang(titleElement.getAttribute("lang"));
NodeList authorList= bookElement.getElementsByTagName("author");
String author= "";for (int j = 0; j < authorList.getLength(); j++) {
author= author + authorList.item(j).getTextContent() + "/";
}
author= author.substring(0, author.length() - 1);
book.setAuthor(author);
book.setYear(Integer.valueOf(bookElement.getElementsByTagName("year").item(0).getTextContent()));
book.setPrice(Double.valueOf(bookElement.getElementsByTagName("price").item(0).getTextContent()));
lists.add(book);
}
}
}catch(Exception e) {
e.printStackTrace();
}returnlists;
}
}
运行结果如图所示:
packagecom.andieguo.xmldemo;
importjava.io.File;
importjava.util.ArrayList;
importjava.util.List;
importjavax.xml.parsers.DocumentBuilder;
importjavax.xml.parsers.DocumentBuilderFactory;
importorg.w3c.dom.Document;
importorg.w3c.dom.Element;
importorg.w3c.dom.Node;
importorg.w3c.dom.NodeList;
publicclassReadXMLFile {
publicstaticvoidmain(String[] args) {
File file = newFile("src/com/andieguo/xmldemo/books.xml");//books.xml文件应放在和ReadXMLFile.java同级的文件夹下
List books = readXMLFile(file);
for(Book book : books) {
System.out.println(book.toString());
}
}
publicstaticList readXMLFile(File file) {
List lists = newArrayList();
try{
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(file);
NodeList bookList = doc.getElementsByTagName("book");
for(inti =0; i
Node bookNode = bookList.item(i);
if(bookNode.getNodeType() == Node.ELEMENT_NODE) {
Element bookElement = (Element) bookNode;
Book book = newBook();
book.setCategory(bookElement.getAttribute("category"));
Element titleElement = (Element) bookElement.getElementsByTagName("title").item(0);
book.setTitle(titleElement.getTextContent());
book.setTitleLang(titleElement.getAttribute("lang"));
NodeList authorList = bookElement.getElementsByTagName("author");
String author = "";
for(intj =0; j
author = author + authorList.item(j).getTextContent() + "/";
}
author = author.substring(0, author.length() -1);
book.setAuthor(author);
book.setYear(Integer.valueOf(bookElement.getElementsByTagName("year").item(0).getTextContent()));
book.setPrice(Double.valueOf(bookElement.getElementsByTagName("price").item(0).getTextContent()));
lists.add(book);
}
}
} catch(Exception e) {
e.printStackTrace();
}
returnlists;
}
}