1.DOM、SAX的比较
(1)DOM的优点和不足
首先,DOM是面向对象的,功能强大,使用起来要简单的多。其次,由于DOM树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构进行更改。它可以在任何时候在树中导航,而不像sax那样是一次性的处理。
但是,另一方面,在内存中构造这样的树设计大量的开销。大型文件完全占用系统内存容量的情况并不少见。此外,创建一棵DOM树可能是一个缓慢的过程。
(2)SAX的优点和不足
相比于文档对象模型DOM,SAX是读取和操作XML数据的更快速、更轻量的方法。SAx允许你在读取文档时处理它,从而不必等待整个文档被存储之后才采取操作。它不涉及DOM所必需的开销和概念跳跃。
另一方面,SAX也有一些不足。DOM所提供的丰富的标准功能在SAX中是没有的。SAX事件是无状态的。当SAX解析器在XML文档中发现文本时,他就向代码发送一个事件。该事件仅仅发现文本,但并不告诉你什么元素包含那个文本。如果想知道这一点,则必须自己编写状态管理代码。SAX事件不是持久的。如果应用程序需要一个数据结构来对XML文档建模,则必须自己编写那样的代码。如果需要从SAX事件访问数据,并且没有把那个数据存储在代码中,那么你不得不再次解析该文档。
2.如何在SAX和DOM之间选择
(1)应用程序的目的
如果打算对数据做出更改并将它输出为XML,那么在大多数情况下,DOM是适当的选择。SAX也能更改数据,但是过程要复杂的多,因为你必须对数据的一份拷贝而不是对数据本身作出更改。
(2)数据容量
对于大型文件,SAX是更好的选择。
(3)数据将如何使用
如果只有数据中的少量部分会被使用,那么使用SAX来将该部分数据提取到应用程序中可能更好。
(4)对速度的需要
SAX实现通常比DOM实现更快。
SAX和DOM不是相互排斥的,你可以用DOM来创建SAX事件流,也可以使用SAX来创建DOM树。
相关推荐
通常我们使用根据以下这些模型创建的API 来分析和操纵XML结构,这些模型可以是基于对象(基于树)的,如文档对象模型...而Java API for XML Parsing(JAXP)和MSXML提供了使用 DOM、SAX等处理XML文档的通用接口。
对于xml&dom&sax&dom4j 文件解析的代码总结
JDK自带xml解析器dom+sax JDK自带xml解析器dom+sax JDK自带xml解析器dom+sax
解析XML的dom、sax和dom4j的jar包。解析XML的dom、sax和dom4j的jar包。
dom and sax 读取xml dom and sax 读取xml dom and sax 读取xml
用C#编写的XML解析器,DOM和SAX都有实现
qt使用DOM和SAX两种方式读写XML文件,代码工程demo,亲测可用
DOM 解析 基本操作 SAX 解析 基本操作 上学期XML的一个小作业,都是一些基本操作,刚学XML的同学们拿来玩玩
XML文件解析器 支持dom解析和sax模式解析,c语言实现
DOM和SAX解析XML文档
java学习笔记——使用DOM解析XML和使用SAX解析XML
用dom 和 sax 读XML文件,简单明了
exemples for Simple API fro XML SAX
包中包含art.xml以及解析这个文件的DomDemo.java和SaxDemo.java
Dom,Sax,Xpath解析XML实例,有源码,实例。简单易用,直接可用
java中四种操作(dom、sax、jdom、dom4j)xml方式详解与
Java 四种方式操作xml,包括xml,dom,sax,jdom这四种方式的一个简单例子。
Java解析XML文件的DOM和SAX方式.doc
使用java语言对XML文档进行解析的示例,包括DOM,SAX方式,并包括使用jdom和jom4j框架进行XML解析或生成XML文档
Java解析XML的三种方式 ...Ø 2、SAX(org.xml.sax) Ø SimpleAPI for XML,以事件的形式通知程序,对Xml进行解析。 Ø 3、XMLPULL(org.xmlpull.v1) Ø 类似于SAX方式,程序以“拉取”的方式对Xml进行解析。