dom4j文件解析

java解析xml常用的两种方式,dom4j和sax,这两种有什么优缺点和区别呢?

一:dom4j : 性能优异,现在主流的框架如hibernate就在用,功能丰富,程序员操作起来比较简便,但是这种方式是一次性将文件加载到内存,对内存的消耗较大,如果xml文件很大,可能会影响到性能甚至内存溢出。

二:sax:性能优异,但是采用事件驱动方式解析,通俗理解可以认为从上至下逐步解析,当遇见元素开始,文本,元素结束时响应事件,编码较dom4j复杂,并且不是持久的,如果事件过后没有保存数据,就会丢失,但相对对内存的消耗较小。

所以,如果不是特别大的xml文件需要解析,建议使用dom4j方式进行解析,下面简单做几个常用的使用dom4j操作xml文件的例子:

1.把一个xml文件理解成树形结构,采用dom4j一次行加载,把整个树理解为一个document,首先获得document,以后的操作都是以document为基础进行操作。

2.本次用例:首先理解xml格式,本例有一个根节点custom,根节点下面有两个子节点,first和second,然后每个子节点下面还有一些节点。


3:获取根节点,document作为整棵树,可以操作的方法很多,请自行试试看,这里只举例说明:


4:获取到了根节点,那我们再根据根节点获取下面的两个子节点吧,节点在dom4j里理解为element,可以有很多种方式获取节点:


5:注意我们的源文件,where节点里面有两个name节点,那么怎么获取呢,注意到,name节点里有个属性叫id,可以根据id获取相同名字节点的不同element,text是一个节点间的数据,如果有多个相同名字同级节点,如果采用之前的指定名字获取节点,默认获取的是第一个哦,想要获取所有,使用elements吧:


这样我们就获得了想要的那个节点,可是,这是通过获取所有然后遍历对比,是不是太麻烦了,是的,其实完全可以根据id属性一步到位~那就是xpath技术,咳咳,同样创建节点,添加属性的方法都很通俗易懂,addElement,addAttribute等等,快去试一试吧,嘿嘿。