一般来说,解析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
分享到:
相关推荐
为了处理XML文档,Java提供了多种解析方法,包括SAX(Simple API for XML)、JDOM(Java Document Object Model)、DOM(Document Object Model)以及stAX(Streaming API for XML)。下面将详细介绍这四种解析XML的...
在Java中,XML解析是处理XML文档的关键技术,有多种方法可以实现,包括DOM、SAX和StAX。下面将详细介绍这三种解析方式,并对比它们的优缺点。 1. DOM(Document Object Model)方式: DOM解析器将整个XML文档加载到...
DOM4J不仅支持DOM,还支持SAX和StAX解析,并且具有丰富的功能,如XPath查询、XML Schema验证等。DOM4J的jar包需要单独下载并引入到项目中,通常可以在官方网站或者Maven仓库找到。引入DOM4J后,可以通过`org.dom4j....
4. **JOM4J**:JOM4J(也称为OxM4J)是另一个高效的XML处理库,它提供了DOM、SAX和StAX的实现,以及XPath和XSLT支持。JOM4J以高性能著称,对于大型XML文档的处理非常有优势。 压缩包中的"XML文档解析"可能包含以下...
- 如果处理的XML文档既大又不需要频繁查询,可以选择StAX(Streaming API for XML),这是一种流式解析方式,介于DOM和SAX之间,性能优于DOM,灵活性接近SAX。 4. Java XML解析库: 除了Java自带的解析库,还有第三...
为了处理XML文档,有多种解析器可供选择,其中包括DOM、SAX、DOM4J、JDOM和StAX。这些解析器各有特点,适用于不同的场景。下面将详细介绍这些解析器的工作原理以及它们在生成XML并返回XML字符串形式时的应用。 1. ...
xml解析方式包括w3c dom,sax,xpp,stax,vtd方式,其实还有jdom和xmlevent这样才够全面
DOM4J不仅支持DOM,还支持SAX和StAX解析器,且提供了一种更简洁的API来处理XML。DOM4J特别适合处理大型XML文档,因为它允许分块读取,降低了内存需求。 3. SAX(Simple API for XML) SAX是一种基于事件驱动的解析...
Java提供了多种解析XML的API,包括SAX(Simple API for XML)、DOM(Document Object Model)以及DOM4J。下面我们将详细探讨这些解析方式及其在实际开发中的应用。 1. SAX解析器: SAX是一种基于事件驱动的解析器,...
在实际开发中,还可以结合StAX(Streaming API for XML)等其他解析方式,根据具体需求灵活选择。 6. 实战练习 通过"理解DOM.zip"和"理解SAX.zip"这两个压缩包文件,你可以找到相关的代码示例和练习,以加深对DOM和...
XML(eXtensible Markup Language)是一种用于存储和传输数据的...此外,还可以考虑使用StAX(Streaming API for XML),这是一种介于DOM和SAX之间的解析方式,结合了两者的优势,既节省内存又允许有限的向前查找能力。
本程序的核心是利用DOM、DOM4J和SAX三种不同的方式解析XML文档,每种方法都有其独特的优势和适用场景。 1. DOM解析: DOM(Document Object Model)是一种将XML文档转换为内存中树形结构的模型。它将XML文件加载到...
本主题主要探讨两种解析XML的方法:DOM(Document Object Model)解析和SAX(Simple API for XML)解析。 首先,DOM解析是一种将整个XML文档加载到内存中的解析方式,它构建了一个树形结构,允许开发者通过节点层级...
XML(eXtensible Markup Language)是一种用于存储和传输数据的标记语言,它具有结构化、自解释的特点,广泛应用于Web服务、配置文件、数据交换等领域...对于大型XML文档,可能需要考虑更高效的解析方式,如SAX或StAX。
然而,对于大型文件,考虑使用SAX(Simple API for XML)或StAX(Streaming API for XML)等更高效的流式解析方法,以减少内存占用和提高性能。了解并熟练掌握DOM解析,将有助于开发者更好地处理XML数据。
标题中的"DOM_XML.rar"可能是一个包含DOM解析XML相关示例的压缩...然而,DOM的缺点是内存占用大,对于大型XML文档,可能需要考虑更轻量级的解析方式,如SAX(Simple API for XML)或StAX(Streaming API for XML)。
在Java中,有多种方式可以解析XML文档,主要包括DOM(Document Object Model)、SAX(Simple API for XML)和StAX(Streaming API for XML)。每种方法都有其优缺点,适用于不同的场景。 1. DOM解析:DOM是将整个...
1. **解析XML文档**:DOM4J可以使用SAX或DOM方式解析XML文件。SAX是事件驱动的解析器,适用于大文件,而DOM解析会将整个文档加载到内存,适合小文件。DOM4J的灵活性在于,可以根据需求选择合适的解析策略。 2. **...
StAX(Streaming API for XML)是另一种流式解析方式,介于DOM和SAX之间。它允许开发者以迭代的方式读取或写入XML,既能避免DOM解析的大内存消耗,又比SAX更易于使用。Java中的StAX实现有Woodstox和Java内置的...
在Java中,有多种库和技术用于解析XML文档,包括JDOM、JAXB、DOM4J、DOM、SAX和StaX。接下来我们将详细探讨这些解析方式。 1. JDOM JDOM是Java Document Object Model的简称,它为Java提供了本地化的XML API。JDOM...