<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>深蓝的blog &#187; XMLStreamReader</title>
	<atom:link href="http://www.lanxinbase.com/?feed=rss2&#038;tag=xmlstreamreader" rel="self" type="application/rss+xml" />
	<link>http://www.lanxinbase.com</link>
	<description>记录日常生活</description>
	<lastBuildDate>Sat, 18 Apr 2026 07:10:07 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.2.3</generator>
	<item>
		<title>Java开发XML解析器Document、SAXParser、XMLStreamReader详解</title>
		<link>http://www.lanxinbase.com/?p=2048</link>
		<comments>http://www.lanxinbase.com/?p=2048#comments</comments>
		<pubDate>Sun, 16 Dec 2018 06:30:18 +0000</pubDate>
		<dc:creator><![CDATA[Alan]]></dc:creator>
				<category><![CDATA[1.服务端语言]]></category>
		<category><![CDATA[Document]]></category>
		<category><![CDATA[SAX]]></category>
		<category><![CDATA[SAXParser]]></category>
		<category><![CDATA[StAX]]></category>
		<category><![CDATA[XMLStreamReader]]></category>

		<guid isPermaLink="false">http://www.lanxinbase.com/?p=2048</guid>
		<description><![CDATA[1.Document

接口对象是官方出的，W3C标准，作为HTML、XML实体类加载到内存中，形成文档对象，然后使用循环进行数据解析。

2.SAXParser

SAXParser是一个用于处理XML的事件驱动的“推”模型。它不是W3C标准，但它是一个得到了广泛认可的API，大多数SAXParser解析器在实现的时候都遵循标准。

SAXParser解析器不象DOM那样建立一个整个文档的树型表示，而是使用数据流的方式读取，然后根据读取文档的元素类型进行事件反馈。这些事件将会推给事件处理器，而事件处理器则提供对文档内容的访问数据包装等。

事件处理器有三种基本类型：

用于访问XML DTD内容的DTDHandler；
用于低级访问解析错误的ErrorHandler；
用于访问文档内容的最普遍类型ContentHandler。
3.XMLStreamReader（StAX）

XMLStreamReader也属于数据留解析的一种，读入文件，按线性的方式从文件头一直读到文件尾；和SAXParser一样，使用事件驱动的模型来反馈事件。不同的是，XMLStreamReader不使用SAXParser的推模型，而是使用 “拉”模型进行事件处理。而且XMLStreamReader解析器不使用回调机制，而是根据应用程序的要求返回事件。XMLStreamReader还提供了用户友好的API用于读入和写出。

尽管SAXParser向ContentHandler返回不同类型的事件，但XMLStreamReader却将它的事件返回给应用程序，甚至可以以对象的形式提供事件。

当应用程序要求一个事件时，XMLStreamReader解析器根据需要从XML文档读取并将该事件返回给该应用程序。 XMLStreamReader提供了用于创建XMLStreamReader读写器的工具，所以应用程序可以使用StAX接口而无需参考特定实现的细节。

与Document和SAXParser不同，XMLStreamReader指定了两个解析模型：指针模型，如SAXParser，它简单地返回事件；迭代程序模型，它以对象形式返回事件(这里需要吐槽一下，我个人是比较喜欢SAXParser的handler事件处理的模式，代码方面比较值观)，其实XMLStreamReader也可以跟SAXParser一样，但是需要额外的对象创建开销。]]></description>
		<wfw:commentRss>http://www.lanxinbase.com/?feed=rss2&#038;p=2048</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
