概述
dom4j是解析XML的另一种扩展方式,是JDOM的一种智能分支,合并了许多超出xml文档表示的功能。dom4j大量使用接口,是一个优秀的java XML API,具有性能优异,灵活性好,功能强大和易使用的特点。
示例
dom4j使用时需要导包,这里使用dom4j-1.6.1.jar
XML文件
book.xml
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book id="1">
<name>java编程思想</name>
<author>Bruce Eckel</author>
<year>2015</year>
<price>79</price>
</book>
<book id="2">
<name>深入理解java虚拟机</name>
<author>周志明</author>
<price>40</price>
</book>
</bookstore>
解析过程
import java.io.File;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class DOM4JXMLTest {
/**
* @param args
* 使用DOM4J方式解析xml文件
*
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//创建SAXReader对象
SAXReader read=new SAXReader();
try {
//通过SAXReader对象的read方法加载xml文件,获取document对象代表整个xml
//read()方法是重载的,可以从InputStream、File、Url等多种不同的源来读取
Document document = read.read(new File("src/res/book.xml"));
//通过document对象获取根结点bookstore
Element bookStore=document.getRootElement();
//通过element对象的elementIterator方法获取迭代器
Iterator it = bookStore.elementIterator();
//遍历迭代器
while(it.hasNext()){
System.out.println("=============开始遍历某一本书=============");
Element book=(Element) it.next();
//获取book的属性
List<Attribute> bookAttrs= book.attributes();
for(Attribute attr : bookAttrs){
System.out.println("属性名:"+attr.getName()+"属性值:"+attr.getValue());
}
Iterator itt=book.elementIterator();
while(itt.hasNext()){
Element child=(Element) itt.next();
System.out.println("节点名:"+child.getName()+"---节点值:"+child.getStringValue());
}
System.out.println("=============结束遍历某一本书=============");
}
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}