随笔-30  评论-123  文章-0  trackbacks-0

摘要
J2EE/XML开发人员一般都用DOM(Document Object Model,文档对象模型)API或者(SAX Simple API for XML)来解析XML文件。这些API各有利弊。DOM API对内存要求高,因为用DOM操纵XML文件需要先将整个XML文件的结构保存到内存中。而SAX API是一个推式解析模型,解析事件由解析器产生。与上面两种方式不同,StAX基于拉式解析模型。在本文中,我们首先建立一个XML文件,然后运用事件生成的StAX拉式方法,采用不同的方法解析它。
<script type="text/javascript"><!--
google_ad_client = "pub-4751025308591894";
google_ad_width = 180;
google_ad_height = 60;
google_ad_format = "180x60_as_rimg";
google_cpa_choice = "CAAQqfyujAIaCL3B8SF26akaKO3M93M";
//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>

推式解析 vs. 拉式解析
和推式解析相比,拉式解析具有以下优点:
1、在拉式解析中,事件是由解析应用产生的,因此拉式解析中向客户端提供的是解析规则,而不是解析器。
2、同推式解析相比,拉式解析的代码更简单,而且不用那么多库。
3、拉式解析客户端能够一次读取多个XML文件。
4、拉式解析允许你过滤XML文件和跳过解析事件。

进入StAX的世界
StAX是Streaming API for XML的缩写,它包含在2004年3月的JSR 173 中。StAX是JDK6.0中包含的新特性。
在推式模型中,直到整个XML文件全部被解析,解析器才会产生解析事件。而拉式解析由应用程序来控制,也就是说解析事件由应用程序产生。这就意味着,你可以暂缓解析、解析时跳过某个元素或者同时解析多个文件。用DOM解析式要先将XML文件解析成DOM结构,因此降低了解析效率。使用StAX,解析事件在XML文件解析过程中产生。下面是各种解析方法之间的比较:

 XML Parser API Feature Summary
Feature
StAX
SAX
DOM
TrAX
API Type
Pull, streaming
Push, streaming
In memory tree
XSLT Rule
Ease of Use
High
Medium
High
Medium
XPath Capability
No
No
Yes
Yes
CPU and Memory Efficiency
Good
Good
Varies
Varies
Forward Only
Yes
Yes
No
No
Read XML
Yes
Yes
Yes
Yes
Write XML
Yes
No
Yes
Yes
Create, Read, Update, Delete
No
No
Yes
No

StAX API同样也在JWSDP(Java Web Services Developer Pack )1.6中得到实现,你可以在包javax.xml.stream 中找到它。XMLStreamReader接口用来解析XML文件。XMLStreamWriter接口用来生成XML文件,XMLEventReader用一个对象事件迭代器来解析XML事件。与之相反,XMLStreamReader采用的是游标机制。

前期准备
如果你正在用JDK1.6,那么StAX API已经在默认的路径下了。如果你在用JWSDP 1.6,你需要添加JWSDP 1.6 StAX API到指定路径下。将<jwsdp-1.6>\sjsxp\lib\ jsr173_api.jar 和 <jwsdp-1.6>;\sjsxp\lib\sjsxp.jar添加到CLASSPATH环境变量中,安装JWSDP 1.6到<jwsdp-1.6>目录下,Jsr173_api.jar 是 JSR-173 API的JAR。

未完,待续。。。

posted on 2006-06-29 20:53 学二的猫 阅读(4616) 评论(1)  编辑  收藏 所属分类: Java禅机

评论:
# re: 在JDK6.0中用StAX解析XML 2012-03-22 10:38 | findkalex
博客很漂亮~  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: