处理XML有2种方式,DOM和SAX。一般的实际开发中,这2种使用的不多,直接用dom4j来解析XML就好了,包括CRUD等操作都很方便的。这里介绍的DOM和SAX是比较底层的,具体的API在jdk中可以查到的。
![技术分享]()
![技术分享]()
![技术分享]()
1.DOM特点:
以树型结构访问XML文档。 一棵DOM树包含全部元素节点和文本节点。可以前后遍历树中的每一个节点。
整个文档树在内存中,便于操作;支持删除、修改、重新排列等多种功能。 将整个文档调入内存(包括无用的节点),浪费时间和空间。 一旦解析了文档还需多次访问这些数据;硬件资源充足(内存、CPU)情况下使用。
2.DOM树与节点
XML文档被解析成树型结构。 树由节点组成。共有12种不同的节点。 节点可以包含其他节点(依赖于节点的类型)。 父节点包含子节点。叶子节点没有子节点。
3.节点类型
知道下面这3种比较常用的就好了:Document(节点) Element(元素) Attribute(属性)
解析器向一个事件处理程序发送事件,比如元素开始和元素结束,而事件处理器则处理该信息。
然后应用程序本身就能够处理该数据。原始的文档仍然保留完好无损。
DOM:处理大型文件时其性能下降的非常厉害。这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随机访问
优点:1.提供随机定义元素操作,来回移动指针。 2.将整个XML文件一次性加载到内存,形成虚的内存树。
缺点:1.如果XML文件较大,内存空间占用较大。 2.强制将较大的XML文件加载到内存中,有可能损害文件 3.功能通用性
SAX:不同于DOM,SAX是事件驱动型的XML解析方式。它顺序逐行读取XML文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对
XML的顺序访问
总结:DOM在做CRUD都比较方便,但不适合解析大的XML文档。SAX占用资源比较少,但只适合读取XML。无废话XML--XML解析(DOM和SAX)
原文:http://blog.csdn.net/u011794238/article/details/42173795