当解析一个XML时我们有很多选择方案,如SAX、DOM、JDOM、JAXP、数据绑定等等,必须根据实际情况来选择一个或几个。在此仅谈论SAX和DOM,其他的以后再说。
没有绝对的哪个好那个坏,只能说在某种情况下哪个更适合一些。
1. SAX提供的模型不允许对XML文件随机存取
如:当前解析到第3个Element,此时程序无法得到第5个Element的信息,因为还没有解析到第5个Element;同样也无法得到第1个Element的信息,因为已经丢失了。当然可以通过声明变量保存解析过的数据,但这如同手动在内存中构造了某种数据结构,一般都是树型结构,这相当麻烦且没有必要,因为DOM恰恰提供了这样一个内存中的模型。
2.SAX模型中元素之间的横向移动困难
SAX提供的是层次型的解析,便利所有第1个Element的子节点(一直到叶子节点)后,才可能开始解析下一个兄弟Element。而且很难知道某一时刻,解析到了哪个层次节点了。DOM则可以很好的解决这个问题,可以方便的找到任何兄弟节点。
3.SAX是熊瞎子劈苞米
SAX是解析一个节点后回调一个方法,把该节点相关信息传送个调用者,然后丢弃这些信息,继续解析下一个节点。正是这样一个机制,使得SAX占用内存很少,它不会预存储整个XML文档,也不会在解析后保存任何解析结果。而DOM则正好相反,把整个XML加载进内存中,即使是延迟加载策略,也会浪费额外的性能为代价。所以当XML非常庞大的时候,还是需要首选SAX。
4.SAX的修改XML能力差
尽管SAX2.0提供了XMLWriter,但是大量的修改XML,还是不建议采用它来完成。XMLWriter更适合记录解析过程的日志。而DOM则具有强大的修改模型的能力,进而保存更新后的XML。
我想如果在SAX与DOM之间进行选择的话,应该可以从以上四点考虑,然后选择合适的解析器。
分享到:
相关推荐
### DOM与SAX比较及选择 #### 一、概述 在处理XML文档时,开发者面临着多种解析技术的选择,包括DOM(Document Object Model)、SAX(Simple API for XML)、JDOM等。其中,DOM和SAX是最常用且重要的两种方式。...
DOM(Document Object Model)解析和SAX(Simple API for XML)解析是两种常见的XML文档解析方式,它们在处理XML数据时有不同的策略和优缺点。 DOM解析是一种基于树型结构的XML解析方法。当一个XML文档被DOM解析器...
### SAX与DOM之间的区别 #### 一、概述 在处理XML文档时,开发人员面临着一个基本的选择:使用DOM(文档对象模型)还是SAX(简单的API for XML)。这两种方法各有优势,选择哪一种取决于具体的应用场景和技术需求...
DOM与SAX入门,适合初学者,理解DOM与SAX,进而web前端开发。
与DOM不同,SAX是一种事件驱动的解析方式。它不会一次性加载整个XML文档,而是逐行读取,遇到开始标签、结束标签、属性等事件时,会触发相应的回调函数。这种方式节省了内存,但操作XML数据相对繁琐,因为需要编写...
在Java中,有多种方式可以解析XML文档,其中最常用的是DOM(Document Object Model)和SAX(Simple API for XML)。本篇文章将详细介绍DOM和SAX解析XML的方法,并通过提供的`DomDemo.java`和`SaxDemo.java`示例代码...
在IT行业中,XML(eXtensible Markup Language)是...总之,DOM、JDOM、SAX和DOM4J各有优缺点,选择哪一种取决于具体的应用场景和需求。在实际开发中,理解这些库的工作原理和性能特性,可以帮助我们做出更明智的选择。
常见的 XML 解析器有 DOM、SAX、JDOM 和 DOM4J 等。每种解析器都有其特点和优缺,选择合适的解析器对应用程序的性能和开发效率有很大影响。 1. DOM 解析器 DOM(Document Object Model)是 W3C 官方标准,用于表示...
java中四种操作(dom、sax、jdom、dom4j)xml方式详解与
Java XML处理技术是Java开发中不可或缺的一部分,主要包含三种主流的API:JDOM、DOM和SAX...总的来说,JDOM、DOM和SAX都是处理XML的重要工具,它们各自具有不同的优缺点,开发者应根据项目需求选择合适的XML处理技术。
DOM与SAX的比较: 1. 性能:SAX通常比DOM更快,因为它不加载整个文档到内存,而DOM需要较大的内存开销。 2. 灵活性:DOM提供更灵活的访问,可以随时修改任何元素,而SAX只能按顺序处理,不支持随机访问。 3. 处理...
在选择DOM和SAX时,需要考虑以下几个因素: 1. **内存限制**:如果内存资源有限,或者处理的XML文件特别大,SAX通常是更好的选择。 2. **处理复杂性**:如果需要频繁地查找、修改或删除XML结构,DOM的便利性可能更有...
在处理XML文档时,有两种主要的解析方式:DOM(Document Object Model)和SAX(Simple API for XML)。这两种方法各有优缺点,适用于不同的场景。 **DOM解析** DOM解析器将整个XML文档加载到内存中,创建一个树形...
Ø 1、DOM(org.w3c.dom) Ø “文档对象模型”方式,解析完的Xml将生成一个树状结构的对象。 Ø 2、SAX(org.xml.sax) Ø SimpleAPI for XML,以事件的形式通知程序,对Xml进行解析。 Ø 3、XMLPULL(org.xmlpull.v1) ...
DOM(Document Object Model)和SAX(Simple API for XML)是两种主要的XML解析方法。在Java编程中,dom4j库提供了对这两种解析方式的支持。 **DOM解析**: DOM解析器将整个XML文档加载到内存中,创建一个树形结构...
本文将深入探讨DOM、SAX、JDom和dom4j四种流行的Java XML解析器,以及它们在处理XML文档时的特点和用法。 1. DOM(Document Object Model) DOM是W3C推荐的一种解析XML的标准方法。它将XML文档表示为一个树形结构,...
为了处理XML文档,有三种主要的解析方式:DOM、SAX和DOM4J。每种方法都有其特点和适用场景,下面将详细介绍这三种解析方式。 1. DOM(Document Object Model) DOM解析器将整个XML文档加载到内存中,构建一个树形...
在Java中,解析XML有多种方法,主要包括DOM、SAX和DOM4J。下面将详细介绍这三种解析方式及其对应的jar包。 1. DOM (Document Object Model) DOM是一种基于树形结构的XML解析方法,它将整个XML文档加载到内存中,...
在C#中处理XML时,有两种主要的解析方法:DOM(Document Object Model)和SAX(Simple API for XML)。 1. DOM解析: DOM是一种将整个XML文档加载到内存中的解析方式,它构建了一个树形结构来表示XML文档,允许...