`

dom、sax检索xml的区别与优缺点

阅读更多
Dom:
DOM 是处理 XML 数据的传统方法。使用 DOM 时,数据以树状结构的形式被加载到内存中。DOM 以及广义的基于树的处理具有几个优点。首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改。它还可以在任何时候在树中上下导航,而不是像 SAX 那样是一次性的处理。DOM 使用起来也要简单得多。
另一方面,在内存中构造这样的树涉及大量的开销。大型文件完全占用系统内存容量的情况并不鲜见。此外,创建一棵 DOM 树可能是一个缓慢的过程。
SAX:
SAX 处理涉及以下步骤:
1.创建一个事件处理程序。
2.创建 SAX 解析器。
3.向解析器分配事件处理程序。
4.解析文档,同时向事件处理程序发送每个事件。
这种处理的优点非常类似于流媒体的优点。分析能够立即开始,而不是等待所有的数据被处理。而且,由于应用程序只是在读取数据时检查数据,因此不需要将数据存储在内存中。这对于大型文档来说是个巨大的优点。事实上,应用程序甚至不必解析整个文档;它可以在某个条件得到满足时停止解析。一般来说,SAX 还比它的替代者 DOM 快许多。
另一方面,由于应用程序没有以任何方式存储数据,使用 SAX 来更改数据或在数据流中往后移是不可能的。
选择 DOM 还是选择 SAX,这取决于下面几个因素:
1.应用程序的目的:如果打算对数据作出更改并将它输出为 XML,那么在大多数情况下,DOM 是适当的选择。并不是说使用 SAX 就不能更改数据,但是该过程要复杂得多,因为您必须对数据的一份拷贝而不是对数据本身作出更改。
2.数据容量: 对于大型文件,SAX 是更好的选择。
数据将如何使用:如果只有数据中的少量部分会被使用,那么使用 SAX 来将该部分数据提取到应用程序中可能更好。 另一方面,如果您知道自己以后会回头引用已处理过的大量信息,那么 SAX 也许不是恰当的选择。
3.对速度的需要: SAX 实现通常要比 DOM 实现更快。
SAX 和 DOM 不是相互排斥的,记住这点很重要。您可以使用 DOM 来创建 SAX 事件流,也可以使用 SAX 来创建 DOM 树。事实上,用于创建 DOM 树的大多数解析器实际上都使用 SAX 来完成这个任务!

下面的链接说明了dom、sax和dom4j的区别,并带有代码说明。
http://www.jb51.net/article/16323.htm
分享到:
评论

相关推荐

    XML操作(dom,sax,jdom,dom4j)

    在处理XML时,有多种解析器可供选择,包括DOM(Document Object Model)、SAX(Simple API for XML)、JDOM以及DOM4J。下面将详细解释这些解析方式及其特点。 1. DOM解析器 DOM解析器将整个XML文档加载到内存中,...

    Java与XML联合编程之DOM篇.rar_dom xml_dom xml java_java xml

    总的来说,DOM在Java与XML的联合编程中提供了一种强大且灵活的机制,使得开发者可以方便地解析、创建和修改XML文档。通过深入理解和熟练运用DOM,可以提高XML处理的效率和代码的可维护性。在实际项目中,选择适合的...

    Java用DOM4J读取XML

    ### Java使用DOM4J读取XML知识点解析 #### 一、概述 在Java开发中,处理XML文件是一项常见的任务。DOM4J是一个简单且功能强大的Java库,用于处理XML文档。它提供了类似于DOM的API,但更为轻量级且易于使用。本篇将...

    信息检索大作业-XML搜索

    常见的XML解析方式包括DOM(Document Object Model)解析、SAX(Simple API for XML)解析和StAX(Streaming API for XML)解析。 **DOM解析:** - **特点**:将整个XML文档加载到内存中,并创建一个DOM树模型。这种方式...

    dom4j的jar包(读取xml)

    Jaxen提供了一个统一的接口,可以与多种XML API(包括DOM、DOM4J和JDOM)一起工作,使得使用XPath变得简单。 使用DOM4J读取XML文件的基本步骤如下: 1. 引入DOM4J和Jaxen的库:在项目中添加`dom4j-1.6.1.jar`和`...

    XML解析技术DOM4J解析

    DOM4J的开发目标与JDOM相似,即提供易于使用且直观的操作体验,但DOM4J更进一步,旨在成为解决所有Java/XML问题的完整方案。为了达到这一目标,DOM4J在防止应用程序错误方面可能不如JDOM那么严格,但它的灵活性和...

    图书馆信息检索系统(JAVA+XML)

    《图书馆信息检索系统:基于JAVA与XML的实现》 在当今信息化社会,图书馆信息检索系统的构建对于提升信息获取效率、优化图书管理具有重要意义。本文将深入探讨一个利用JAVA技术和XML作为数据存储的图书馆信息检索...

    xml文件dom操作详解

    XML(eXtensible Markup Language)...通过DOM,我们可以方便地遍历、检索和修改XML文档,为各种应用程序提供数据支持。随着技术的发展,还有许多高级工具和库可以帮助简化XML操作,但掌握DOM的基础知识始终是必备的。

    xml解析新浪新闻_客户端

    DOM解析XML时,读入整个XML文档并构建一个驻留内存的树结构(节点树),通过遍历树结构可以检索任意XML节点,读取它的属性和值。而且通常情况下,可以借助XPath,直接查询XML节点。 SAX解析XML,是基于事件通知的...

    用PHP读取和编写XML DOM

    例如,要读取清单1中的图书XML文件,可以创建一个DOMDocument对象(如清单2所示),然后通过`load()`函数加载XML文件。`getElementsByTagName()`方法用于检索特定类型的元素,如`book`。遍历这些元素,可以访问其子...

    xml检索技术研究(pdf)

    7. **XML数据库**:XML数据库专门设计用于存储和检索XML文档。它们通常支持XPath和XQuery,并提供高效的索引机制。例如,eXist-db和MarkLogic是两个知名的XML数据库系统。 8. **信息检索理论**:理解TF-IDF(词频-...

    PULL解析xml的demo

    通用性强,它会将XML文件的所有内容读取到内存中,然后使用DOM API遍历XML树、检索所需的数据; 优点:简单直观,但需要将文档读取到内存, 缺点:并不太适合移动设备; 2,SAX SAX是一个解析速度快并且占用内存少的...

    Dom4j写XML和读取XML的工具类,非常好用

    1. **解析XML** - Dom4j可以通过各种方式解析XML文件,如SAX、DOM、StAX或直接从字符串中读取。例如,使用`DocumentFactory.createDocument()`方法可以创建一个新的Document对象,然后通过`parse()`方法加载XML文件...

    dom4j.jar和对应源码src.zip (使用Java解析XML的重要工具)

    DOM4J还支持XPath查询,使得XML数据的检索更为便捷。 **DOM4J的主要特性** 1. **灵活的元素和属性接口**:DOM4J提供了Element和Attribute接口,可以方便地创建、修改和删除XML元素和属性。 2. **XPath支持**:DOM...

    dom4j帮助文档和架包

    4. **事件驱动解析(SAX)**:除了DOM解析,DOM4J还支持基于SAX(Simple API for XML)的事件驱动解析,这在处理大型XML文档时能显著提高性能,因为它不需要一次性加载整个文档到内存。 5. **DOM4J与JAXB集成**:...

    dom4j所依赖的所有jar包

    6. **XPath表达式操作**:DOM4J提供了XPath编译和执行的能力,允许开发者动态构建和执行XPath表达式,增强了XML文档的检索能力。 在标题中提到的“所有jar包”,除了主jar包`dom4j-1.6.1.jar`外,还有`jaxen-1.1-...

    Xml各种解析方式学习总结

    总结,XML解析方式各有优缺点,选择哪种解析方式取决于具体的应用场景。DOM适合小规模、频繁查询的场景;SAX和PULL适合处理大文件;StAX提供了更好的灵活性;JAXB适合对象和XML之间的绑定;DOM4J和JDom则提供了更...

    xml文件解析示范

    XML解析通常有两种主要方式:DOM(Document Object Model)和SAX(Simple API for XML)。 1. DOM解析:DOM将整个XML文档加载到内存中,形成一个树形结构,允许开发者通过节点遍历和操作XML数据。这种方式适用于小...

    DOM4J2.1.1与mysql驱动

    1. **解析XML文档**:DOM4J使用SAX或StAX解析器读取XML文件,并构建一个树形结构的Document对象,允许开发者通过XPath表达式进行查询。 2. **XPath支持**:DOM4J支持XPath,这是一种强大的查询语言,可以快速定位...

Global site tag (gtag.js) - Google Analytics