1.DOM和SAX
解析xml文件有两种方式dom和sax方式.
DOM和SAX都只是接口,是解析xml的两种标准.
(1)使用DOM要求解析器把整个XML文档装载到一个Document对象中。Document对象包含文档元素,即根元素,根元素包含N多个子元素…
一个XML文档解析后对应一个Document对象,这说明使用DOM解析XML文档方便使用,因为元素与元素之间还保存着结构关系。
优点:使用DOM,XML文档的结构在内存中依然清晰。元素与元素之间的关系保留了下来!
缺点:如果XML文档过大,那么把整个XML文档装载进内存,可能会出现内存溢出的现象
(2) DOM会一行一行的读取XML文档,最终会把XML文档所有数据存放到Document对象中。SAX也是一行一行的读取XML文档,但是当XML文档读取结束后,SAX不会保存任何数据,同时整个解析XML文档的工作也就结束了。
但是,SAX在读取一行XML文档数据后,就会给感兴趣的用户一个通知!例如当SAX读取到一个元素的开始时,会通知用户当前解析到一个元素的开始标签。而用户可以在整个解析的过程中完成自己的业务逻辑,当SAX解析结束,不会保存任何XML文档的数据。
优点:使用SAX,不会占用大量内存来保存XML文档数据,效率也高。
缺点:当解析到一个元素时,上一个元素的信息已经丢弃,也就是说没有保存元素与元素之间的结构关系,这也大大限制了SAX的使用范围。如果只是想查询XML文档中的数据,那么使用SAX是最佳选择!
-------------
DOM4J和JDOM
它们两个也是接口,也是解析xml的标准,只不过它们都支持以DOM和SAX两种试解析xml文件.
dom4j本身是一个规范,使用它来解析xml也需要底层的解析器支持,
DOM和SAX是解析xml的两种方式,它们只是接口.而JDOM和DOM4J是真正的解析器,是实现类,一个解析器应该提供了两种解析xml文件的方式,也就是说JDOM和DOM4J都实现了DOM和SAX接口.使用JDOM和DOM4J都可以以DOM或SAX的方式来解析xml文档.
这里需要注意的是DOM4J本身也是接口,它是一组规范然而: 对于DOM而言,DOM本身没有提供已经实现的解析器, 而对于DOM4J而言,DOM4J自己提供了一个解析器,如果DOM4J没有找到其他的解析器,那么它将使用自己的解析器.使用者需要注意,DOM4J解析的结果是org.dom4j.Document,而不是org.w3c.Document。DOM4J与DOM一样,只是一组规范(接口与抽象类组成),底层必须要有DOM4J解析器的实现来支持。
--------------
JAXP
JAXP与解析器的关系就是像JAP与hibernat,toplink的关系
所以一个xml解析器不仅仅要实现DOM和SAX接口还需要实现JAXP接口.
1. 当一个解析器实现了DOM和SAX接口那么我们就可以使用这个解析器通过两种方式dom和sax方式来解析xml文档.
2. 当多个xml解析器都实现了JAXP接口那我们就可以直接实现JAXP接口中定义的方法来解析xml而不需要关心特定解析器提供的方法,而事实上各个xml解析器提供的解析类和解析方法是不同的:例如DOM4J和JDOM提供的类和方法一定是不同的,并且使用方式也不相同, 我们使用JAXP的好处就是不需要知道解析器的底层实现.就像我们使用JAP就可以任意切换底层的ORM框架的实现产品.
- 浏览: 49646 次
- 性别:
- 来自: 北京
相关推荐
DOM与SAX入门,适合初学者,理解DOM与SAX,进而web前端开发。
### SAX与DOM之间的区别 #### 一、概述 在处理XML文档时,开发人员面临着一个基本的选择:使用DOM(文档对象模型)还是SAX(简单的API for XML)。这两种方法各有优势,选择哪一种取决于具体的应用场景和技术需求...
在处理XML文档时,有两种主要的解析方式:DOM(Document Object Model)和SAX(Simple API for XML)。这两种方法各有优缺点,适用于不同的场景。 **DOM解析** DOM解析器将整个XML文档加载到内存中,创建一个树形...
DOM与SAX的比较: 1. 性能:SAX通常比DOM更快,因为它不加载整个文档到内存,而DOM需要较大的内存开销。 2. 灵活性:DOM提供更灵活的访问,可以随时修改任何元素,而SAX只能按顺序处理,不支持随机访问。 3. 处理...
### DOM与SAX比较及选择 #### 一、概述 在处理XML文档时,开发者面临着多种解析技术的选择,包括DOM(Document Object Model)、SAX(Simple API for XML)、JDOM等。其中,DOM和SAX是最常用且重要的两种方式。...
与DOM不同,SAX是一种事件驱动的解析方式。它不会一次性加载整个XML文档,而是逐行读取,遇到开始标签、结束标签、属性等事件时,会触发相应的回调函数。这种方式节省了内存,但操作XML数据相对繁琐,因为需要编写...
DOM(Document Object Model)解析和SAX(Simple API for XML)解析是两种常见的XML文档解析方式,它们在处理XML数据时有不同的策略和优缺点。 DOM解析是一种基于树型结构的XML解析方法。当一个XML文档被DOM解析器...
java中四种操作(dom、sax、jdom、dom4j)xml方式详解与
本篇文章将探讨四种处理XML的Java库:DOM、JDOM、SAX和DOM4J,分析它们的原理、性能特点以及适用场景。 首先,我们来了解DOM(Document Object Model)。DOM是W3C组织定义的一种API,它将XML文档解析为一个树形结构...
Ø 1、DOM(org.w3c.dom) Ø “文档对象模型”方式,解析完的Xml将生成一个树状结构的对象。 Ø 2、SAX(org.xml.sax) Ø SimpleAPI for XML,以事件的形式通知程序,对Xml进行解析。 Ø 3、XMLPULL(org.xmlpull.v1) ...
常见的 XML 解析器有 DOM、SAX、JDOM 和 DOM4J 等。每种解析器都有其特点和优缺,选择合适的解析器对应用程序的性能和开发效率有很大影响。 1. DOM 解析器 DOM(Document Object Model)是 W3C 官方标准,用于表示...
SAX是一种事件驱动的XML解析器,与DOM不同,它不将整个XML文档加载到内存中,而是逐行读取文档,遇到元素、属性等事件时触发回调函数。这种流式解析方式节省了内存,适合处理大型或无限长度的XML数据流。然而,SAX...
在Java中,有多种方式可以解析XML文档,其中最常用的是DOM(Document Object Model)和SAX(Simple API for XML)。本篇文章将详细介绍DOM和SAX解析XML的方法,并通过提供的`DomDemo.java`和`SaxDemo.java`示例代码...
在C#中处理XML时,有两种主要的解析方法:DOM(Document Object Model)和SAX(Simple API for XML)。 1. DOM解析: DOM是一种将整个XML文档加载到内存中的解析方式,它构建了一个树形结构来表示XML文档,允许...
【DOM和SAX概念的总结】 在XML处理中,有两个主要的解析模型:基于对象的DOM(Document Object Model)和基于事件的SAX(Simple API for XML)。它们都是用来解析和操作XML文档的API,但各有特点和适用场景。 DOM...
为了处理XML文档,有三种主要的解析方式:DOM、SAX和DOM4J。每种方法都有其特点和适用场景,下面将详细介绍这三种解析方式。 1. DOM(Document Object Model) DOM解析器将整个XML文档加载到内存中,构建一个树形...
以下是对Android中四种主要解析方式——DOM、SAX、Pull和JSON的详细解释。 1. DOM(Document Object Model)解析: DOM是一种基于树形结构的XML文档模型,它将整个XML文档加载到内存中,形成一个节点树。通过这个树...
DOM(Document Object Model)和SAX(Simple API for XML)是两种主要的XML解析方法。在Java编程中,dom4j库提供了对这两种解析方式的支持。 **DOM解析**: DOM解析器将整个XML文档加载到内存中,创建一个树形结构...
对于xml&dom&sax&dom4j 文件解析的代码总结