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框架的实现产品.
- 浏览: 49892 次
- 性别:
- 来自: 北京
相关推荐
而Java API for XML Parsing (JAXP)提供了一个统一的接口,可以处理DOM和SAX解析,使得在不同解析器间切换变得更加容易。微软的MSXML是另一个类似的库,提供对XML文档的处理,支持DOM和SAX。 在选择DOM和SAX时,...
在 Java 中使用 DOM 方式解析 XML 文件需要使用 JAXP(Java API for XML Processing),首先需要创建一个解析器工厂,然后使用工厂创建一个具体的解析器对象。然后,使用解析器对象来解析 XML 文件,得到一个 ...
Dom4j is an easy to use, open source library for working with XML, XPath and XSLT on the Java platform using the Java Collections Framework and with full support for DOM, SAX and JAXP. Dom4j是一个易用...
JAXP提供了解析XML文档和转换XML数据的能力,它包括三个主要组件:SAX(Simple API for XML)、DOM(Document Object Model)和XSLT(eXtensible Stylesheet Language Transformations)。在给定的压缩包文件中,...
JAXP(Java API for XML Processing)是Java平台上的XML处理标准,它提供了包括SAX在内的三种解析方式,即DOM(Document Object Model)、SAX和XSLT。本篇文章将深入探讨如何使用JAXP的SAX解析器来读取XML内容。 ...
### JAXP与DOM、SAX的关系 DOM和SAX是两种主要的XML解析技术。DOM提供了一种树状结构的模型来表示XML文档,使得对文档的查询和修改变得容易。SAX则是一种事件驱动的解析模型,适用于大规模文档的高效解析。JAXP并不...
XML_StuGradeExam_domXML解析技术之dom、Sax、dom4j技术演习以及Schema XML文档约束##XML解析开发包Jaxp(sun)Jdomdom4j####ExamExam是一个使用Xml持久化保存数据的xml数据库,该项目是演练dom解析XML技术很好的一个...
DOM4J 是一个开源的 XML 解析包,由 dom4j.org 出品,应用于 Java 平台,采用了 Java 集合框架并完全支持 DOM、SAX 和 JAXP。DOM4J 的主要特点是使用大量的接口,所有主要接口都在 org.dom4j 里面定义。 一、DOM4J ...
Dom4j is an easy to use, open source library for working with XML, XPath and XSLT on the Java platform using the Java Collections Framework and with full support for DOM, SAX and JAXP. Dom4j是一个...
DOM解析器如JAXP的Crimson,会在内存中构建整个文档的树形结构,这使得DOM易于使用,但对内存和性能的要求较高。如果处理的XML文件较小,DOM是一个不错的选择,但对于大型文件,可能会因为内存消耗过大而变得不可行...
JAXP不提供新的XML处理方式,而是对SAX(Simple API for XML)和DOM(Document Object Model)这两个流行的XML解析API进行了封装,使得它们的使用更加方便和统一。 **JAXP的基本概念** 1. **API与抽象层的区别** ...
JAXP(Java API for XML Processing)是Java处理XML的规范,包括了DOM、SAX和XPath的相关API。 【总结】 XML作为数据交换和存储的标准,配合不同的解析策略(如SAX和DOM)以及验证工具(如DTD和Schema),在各种IT...
Dom4j是一个易用的、开源的库,用于XML,XPath和XSLT。它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP。解析xml的dom4j,最新版本2.1.3。各大开源软软件使用最广泛
dom4j is an easy to use, open source library for working with XML, XPath and XSLT on the Java platform using the Java Collections Framework and with full support for DOM, SAX and JAXP.
本文将详细介绍如何使用Java中的JAXP(Java API for XML Processing)来实现DOM解析,帮助开发者快速理解和掌握DOM解析技术。 首先,我们来了解一下JAXP。JAXP是Java提供的用于处理XML文档的一组API,主要包含两个...
1. **XML解析与构建**:DOM4J支持SAX和DOM解析器,可以将XML文档解析为树形结构。同时,它也提供了构建XML文档的方法,允许开发者动态创建XML内容。 2. **XPath支持**:DOM4J实现了XPath,这是一种强大的查询XML...
1. **引入SAX解析库**:在Java中,通常使用JAXP(Java API for XML Processing)提供的SAX解析库。 2. **创建事件处理器**:实现`org.xml.sax.ContentHandler`接口,定义回调方法。 3. **配置解析器**:使用`org.xml...
这个版本的DOM4J支持Java DOM、SAX和JAXP,这些是Java平台处理XML的基础规范。DOM(Document Object Model)提供了一种结构化的表示XML文档的方式,使程序可以对XML进行操作;SAX(Simple API for XML)是一种事件...