在上一篇java解析xml技术(一)中,我已经讲完jdk中自带解析xml的两种方式dom和sax,现在我继续讲一讲另一个java平台下的xml解析工具dom4j。
dom4j就是dom for java的缩写,它完全支持dom、sax、jaxp机制。它处理xml的方式如下:
List itemList=list.elements();
for(int i=0;i<itemList.size();i++){
Element ele=(Element)itemList.get(i);
System.out.println(ele.getText());
}
从代码中可以看出,dom4j解析与dom解析的思想基本相似,但dom4j的处理方式更简单。
除此之外,dom4j还有两个优势:
1.面向接口编程。dom4j采用面向接口编程的方式来处理xml文档解析,程序主要面向document、element等接口编程,至于这些接口的底层实现,程序员无须关心。
2.支持多种解析机制。这个是dom4j最大的优势,因为它除了支持基本的dom和sax解析机制,还有xml pull parser 3.x来解析xml文档。程序员可以根据自己需要选择适合的机制,但是无论哪一种机制,都是把xml文档转化为dom4j树。注意,它能够用sax机制构建一颗dom4j树,这样就可以解决sax最大的缺点,不能重复访问。但现在我介绍的是他的第三种机制xpp3Reader。
1.把dom4j.jar和xpp3.jar引用作为项目的库。
2.创建XPP3Reader。
XPP3Reader reader = new XPP3Reader();
3.获取xml的根节点。
Document doc = reader.read(new FileInputStream(new File(filename)));
Element root = doc.getRootElement();
4.进行xml解析。
parse(root);
public void parse(Element root){
List el=root.elements();//获得当前节点的所有子节点
//遍历每个子节点
for(Object o:el)
{
Element element=(Element)o;
//如果该节点含有文本数据,也就是叶节点
if(element.isTextOnly())
{
List attList=element.attributes();//获得所有属性
for(Object e:attList){
System.out.println(element.getQName().getName()+"元素的"+((Attribute)e).getQName().getName()+"属性值为:"+((Attribute)e).getValue());
}
//输出子节点的文本数据
System.out.println(element.getText());
}
else
parse(element);
}
}
看完代码是否对dom4j的简单而心动呢,心动不如行动,赶快下载试试吧。http://download.csdn.net/detail/xanxus46/4444906