sax,dom,jdom,dom4j的比较

SAX

sax分析器在对xml文档进行分析时,触发一系列的事件,应用程序通过事件处理函数实现对xml文档的访问.

因为事件触发是有时序性的,所以sax分析器提供的是一种对xml文档的顺序访问机制,对于已经分析过的部分,

不能再重新倒回去处理.

sax分析器在实现时,只是顺序地检查xml文档中的字节流,判断当前字节是xml语法中的哪一部分,检查是否符合

xml语法并且触发相应的事件.对于事件处理函数的本身,要由应用程序自己来实现.

同DOM分析器相比,sax分析器对xml文档的处理缺乏灵活性,但对于只访问xml文档中的数据而不改变应用程序

来说,sax分析器的效率会很高.

sax对内存要求也比较低.

 

优点:无需将整个文档加载到内存中,所以内存消耗少.

       推模型允许注册多个contentHandler.

缺点:没有内置的文档导航支持.

       不能随机访问xml文档.

       不支持原地修改xml.

       不支持名字空间作用域.

 

DOM

DOM分析器把整个xml文档以一棵树的形式放在内存中,应用程序可以随时对DOM树中的任何一个部分进行访问

与操作.通过DOM树,应用程序可以随机访问.

这种访问方式给程序开发带来了很大的灵活性,可以任意地控制整个xml文档中的内容.

但是DOM对内存的需求比较高,并且效率也不是很理想.

 

优点:丰富的API集合,可以轻松导航.

      整个DOM树加载到内存,允许随机访问.

缺点:整个xml文档必须一次解析完.

      整个DOM树都加载到内存中,内存要求高.

      一般的DOM节点对于必须为所有节点创建对象的对象类型绑定不太理想.

 

JDOM

JDOM是处理xml的纯java api.使用具体类而不是接口.JDOM具有树的遍历,又有SAX的java规则.

 

优点:是基于树的处理xml的java api,把树加载到内存中.

      没有向下兼容的限制,所以比DOM简单.

      速度快.

      具有SAX的java 规则.

缺点:不能处理大于内存的文档.

       JDOM表示XML文档逻辑模型,不能保证每个字节真正变换.

       针对实例文档不提供DTD与模式的任何实际模型.

       不支持于DOM中相应遍历包.

 

DOM4J

dom4j有更复杂的api,所以dom4j比jdom有更大的灵活性.

 

 

你可能感兴趣的:(dom4j)