`
364434006
  • 浏览: 591876 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

XML的解析方式(DOM、SAX、StAX)

    博客分类:
  • XML
 
阅读更多

一般来说,解析XML文件存在着两种方式,一种是event-based API,比如说象SAX,XNI. 第二种是tree-based API,比如说DOM,JDOM,DOM4j等等. 一般来说,读取配置文件时,我们一般比较喜欢应用tree-based API这种方式,就是把xml文件读入,变成DOM形式的一棵树,然后进行查找,获取自己想要的东西. 但是,这种方式有个缺点,那就是如果你这个XML文件很大的话,你需要占用很大的内存.
所以对于很大的一个xml文件,又不需要进行随机查找的时候,比较适合采用event-based API,那就是说他解析xml文件,如果是START_ELEMENT,那么他就调用startElement()的回调方法..他遍历过了就过了,不能再回去.
在event-based API中又存在两种方式: 一个是PUSH的方式,就比如说是SAX. 另外一种是PULL的方式,比如StAX.
怎么来理解PUSH和PULL的区别呢. 先假设有这么三个角色: application, xmlFile, xmlParser. 那么,如果我们采用PUSH的方式,步骤为:
 1. 创建一个xmlParser.
 2. 把我们的application处理xml的注册到xmlParser.
 3. xmlParser遍历xmlFile,然后来调用application.
这里面,用的是Observer的模式,就是接收到event的时候,去调用event的callback函数, 这里面有个很不好的地方就是,你application反而是被Parser控制了.
于是,就出现了PULL方式的解析.
 1. 创建一个xmlParser
 2. xmlParser打开一个xmlFile
 3. application调用这个xmlParser, 来获取xmlParser打开xmlFile所得到的一系列event.
这里,用到了Iterator的模式. 最主要的一点是: 这个时候application控制了xmlParser.
StAX有两种API,一种是cursor-based,一种是iterator-based. 这两种详细的比较参考:
http://java.sun.com/webservices/docs/1.6/tutorial/doc/SJSXP3.html#wp102139

这里,SAX和StAX的另外一点区别是: SAX只能读xml文件. StAX不但能读xml文件,而且还能写xml文件.

传统的处理XML的API有DOM和SAX两种,DOM速度慢,占用内存极大。SAX虽然比DOM快,但速度任不理想。现在,一种新的基于流的 Stream API for XML(简称 StAX)极大地提高了XML的处理速度,并且已经称为JSR 173标准(http://www.jcp.org/en/jsr/detail?id=173

http://blog.chinaunix.net/uid-22342666-id-1774789.html

分享到:
评论

相关推荐

    java xml 4 种 解析xml 方法 sax jdom dom stAX

    为了处理XML文档,Java提供了多种解析方法,包括SAX(Simple API for XML)、JDOM(Java Document Object Model)、DOM(Document Object Model)以及stAX(Streaming API for XML)。下面将详细介绍这四种解析XML的...

    Java下3中XML解析 DOM方式、SAX方式和StAX方式

    在Java中,XML解析是处理XML文档的关键技术,有多种方法可以实现,包括DOM、SAX和StAX。下面将详细介绍这三种解析方式,并对比它们的优缺点。 1. DOM(Document Object Model)方式: DOM解析器将整个XML文档加载到...

    解析XML的dom、sax和dom4j的jar包

    DOM4J不仅支持DOM,还支持SAX和StAX解析,并且具有丰富的功能,如XPath查询、XML Schema验证等。DOM4J的jar包需要单独下载并引入到项目中,通常可以在官方网站或者Maven仓库找到。引入DOM4J后,可以通过`org.dom4j....

    XML-java.rar_XML SAX_sax_sax xml_sax 解析 xml_xml using dom

    4. **JOM4J**:JOM4J(也称为OxM4J)是另一个高效的XML处理库,它提供了DOM、SAX和StAX的实现,以及XPath和XSLT支持。JOM4J以高性能著称,对于大型XML文档的处理非常有优势。 压缩包中的"XML文档解析"可能包含以下...

    XML.rar_XML SAX_XML java_dom xml_java xml_java解析xml

    - 如果处理的XML文档既大又不需要频繁查询,可以选择StAX(Streaming API for XML),这是一种流式解析方式,介于DOM和SAX之间,性能优于DOM,灵活性接近SAX。 4. Java XML解析库: 除了Java自带的解析库,还有第三...

    DOM、SAX、DOM4J、JDOM、StAX生成XML并返回XML字符串形式

    为了处理XML文档,有多种解析器可供选择,其中包括DOM、SAX、DOM4J、JDOM和StAX。这些解析器各有特点,适用于不同的场景。下面将详细介绍这些解析器的工作原理以及它们在生成XML并返回XML字符串形式时的应用。 1. ...

    xml解析方式大全

    xml解析方式包括w3c dom,sax,xpp,stax,vtd方式,其实还有jdom和xmlevent这样才够全面

    生成、解析xml的四种方式(dom,dom4j,sax,jdom)

    DOM4J不仅支持DOM,还支持SAX和StAX解析器,且提供了一种更简洁的API来处理XML。DOM4J特别适合处理大型XML文档,因为它允许分块读取,降低了内存需求。 3. SAX(Simple API for XML) SAX是一种基于事件驱动的解析...

    Java使用sax、dom、dom4j解析xml文档

    Java提供了多种解析XML的API,包括SAX(Simple API for XML)、DOM(Document Object Model)以及DOM4J。下面我们将详细探讨这些解析方式及其在实际开发中的应用。 1. SAX解析器: SAX是一种基于事件驱动的解析器,...

    java dom sax XML入门教程

    在实际开发中,还可以结合StAX(Streaming API for XML)等其他解析方式,根据具体需求灵活选择。 6. 实战练习 通过"理解DOM.zip"和"理解SAX.zip"这两个压缩包文件,你可以找到相关的代码示例和练习,以加深对DOM和...

    DOM和SAX解析XML文档

    XML(eXtensible Markup Language)是一种用于存储和传输数据的...此外,还可以考虑使用StAX(Streaming API for XML),这是一种介于DOM和SAX之间的解析方式,结合了两者的优势,既节省内存又允许有限的向前查找能力。

    dom+dom4J+SAX 解析

    本程序的核心是利用DOM、DOM4J和SAX三种不同的方式解析XML文档,每种方法都有其独特的优势和适用场景。 1. DOM解析: DOM(Document Object Model)是一种将XML文档转换为内存中树形结构的模型。它将XML文件加载到...

    j2ee10:xml01:dom解析和sax解析

    本主题主要探讨两种解析XML的方法:DOM(Document Object Model)解析和SAX(Simple API for XML)解析。 首先,DOM解析是一种将整个XML文档加载到内存中的解析方式,它构建了一个树形结构,允许开发者通过节点层级...

    xml解析 dom方式 例子和讲解

    XML(eXtensible Markup Language)是一种用于存储和传输数据的标记语言,它具有结构化、自解释的特点,广泛应用于Web服务、配置文件、数据交换等领域...对于大型XML文档,可能需要考虑更高效的解析方式,如SAX或StAX。

    xml解析之DOM

    然而,对于大型文件,考虑使用SAX(Simple API for XML)或StAX(Streaming API for XML)等更高效的流式解析方法,以减少内存占用和提高性能。了解并熟练掌握DOM解析,将有助于开发者更好地处理XML数据。

    DOM_XML.rar_DOM_dom xml_dom xml java_dom解析xml_java解析xml

    标题中的"DOM_XML.rar"可能是一个包含DOM解析XML相关示例的压缩...然而,DOM的缺点是内存占用大,对于大型XML文档,可能需要考虑更轻量级的解析方式,如SAX(Simple API for XML)或StAX(Streaming API for XML)。

    java心电图xml解析.zip

    在Java中,有多种方式可以解析XML文档,主要包括DOM(Document Object Model)、SAX(Simple API for XML)和StAX(Streaming API for XML)。每种方法都有其优缺点,适用于不同的场景。 1. DOM解析:DOM是将整个...

    DOM4J xml解析工具

    1. **解析XML文档**:DOM4J可以使用SAX或DOM方式解析XML文件。SAX是事件驱动的解析器,适用于大文件,而DOM解析会将整个文档加载到内存,适合小文件。DOM4J的灵活性在于,可以根据需求选择合适的解析策略。 2. **...

    XML解析框架比较

    StAX(Streaming API for XML)是另一种流式解析方式,介于DOM和SAX之间。它允许开发者以迭代的方式读取或写入XML,既能避免DOM解析的大内存消耗,又比SAX更易于使用。Java中的StAX实现有Woodstox和Java内置的...

    jdom,jaxb,dom4j,dom,sax,satx解析XML

    在Java中,有多种库和技术用于解析XML文档,包括JDOM、JAXB、DOM4J、DOM、SAX和StaX。接下来我们将详细探讨这些解析方式。 1. JDOM JDOM是Java Document Object Model的简称,它为Java提供了本地化的XML API。JDOM...

Global site tag (gtag.js) - Google Analytics