日期:2014-05-19  浏览次数:20741 次

问下xml文件解析方式的问题
1.dom解析方式和sax方式的主要不同是什么?

2.dom4j的解析方式是什么?
------最佳解决方案--------------------
Element root = new SAXReader().read(file).getRootElement();// xml文档的根节点
Iterator iterator = root.elements().iterator();// 获取xml的子节点
while (iterator.hasNext()) {// 循环子节点
Element element = (Element) iterator.next();// xml文档的一级子节点

}

------其他解决方案--------------------
Dom: 一次性把XML的内容全读到内存里,创建一棵XML树
SAX:使用流的方式读取XML的内容,从文件开头读一部分,解析,继续读,不需要太多内存
Dom4j,看名字就可以知道使用的是Dom的方式解析XML
------其他解决方案--------------------
1.使用DOM解析XML时,首先将XML文档加载到内存当中,然后可以通过随机的方式访问内存中的DOM树;SAX是基于事件而且是顺序执行的,一旦经过了某个元素,我们就没有办法再去访问它了,SAX不必事先将整个XML文档加载到内存当中,因此它占据内存要比DOM小,对于大型的XML文档来说,通常会使用SAX而不是DOM进行解析。 SAX也是使用的观察者模式.


2.dom4j完全支持DOM,SAX 和JAXP
------其他解决方案--------------------
楼主的问题直接上dom4j官网看更好,上面就很详细的介绍了
------其他解决方案--------------------
一楼自己占。
------其他解决方案--------------------
2楼在回答我的问题么?
------其他解决方案--------------------
引用:
Dom: 一次性把XML的内容全读到内存里,创建一棵XML树
SAX:使用流的方式读取XML的内容,从文件开头读一部分,解析,继续读,不需要太多内存
Dom4j,看名字就可以知道使用的是Dom的方式解析XML


那dom4j的解析器为什么是saxReader?dom4j也是把xml内容全部读到内存中吗?
------其他解决方案--------------------
引用:
1.使用DOM解析XML时,首先将XML文档加载到内存当中,然后可以通过随机的方式访问内存中的DOM树;SAX是基于事件而且是顺序执行的,一旦经过了某个元素,我们就没有办法再去访问它了,SAX不必事先将整个XML文档加载到内存当中,因此它占据内存要比DOM小,对于大型的XML文档来说,通常会使用SAX而不是DOM进行解析。 SAX也是使用的观察者模式.


2.do……


dom4j对于dom和sax解析都支持,那么具体是如何支持的?就是那些方法体现了dom解析,哪些方法体现了sax解析,简单举两个例子就行。有点晕了。谢谢哈!