摘要

J2EE/XML开发人员一般都用DOM(Document Object Model,文档对象模型)API或者(SAX Simple API for XML)来解析XML文件。这些API各有利弊。DOM API对内存要求高,因为用DOM操纵XML文件需要先将整个XML文件的结构保存到内存中。而SAX API是一个推式解析模型,解析事件由解析器产生。与上面两种方式不同,StAX基于拉式解析模型。在本文中,我们首先建立一个XML文件,然后运用事件生成的StAX拉式方法,采用不同的方法解析它。

google_ad_client = "pub-4751025308591894";

google_ad_width = 180;

google_ad_height = 60;

google_ad_format = "180x60_as_rimg";

google_cpa_choice = "CAAQqfyujAIaCL3B8SF26akaKO3M93M";

//-->

推式解析 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到指定路径下。将\sjsxp\lib\ jsr173_api.jar 和 ;\sjsxp\lib\sjsxp.jar添加到CLASSPATH环境变量中,安装JWSDP 1.6到目录下,Jsr173_api.jar 是 JSR-173 API的JAR。

未完,待续。。。

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

java stax xml_在JDK6.0中用StAX解析XML相关推荐

  1. 使用JDOM2.0.4 操作/解析xml

    转载自   使用JDOM2.0.4 操作/解析xml 一.解析xml内容 xml文件内容: <?xml version="1.0" encoding="utf-8& ...

  2. tinyxml 读取文本节点_c++中用TINYXML解析XML文件

    TinyXML介绍 最近做一个负载均衡的小项目,需要解析xml配置文件,用到了TinyXML,感觉使用起来很容易,给出一个使用TinyXML进行XML解析的简单例子,很多复杂的应用都可以基于本例子的方 ...

  3. java映射文件是哪一种xml_java解析xml的几种方式哪种最好?

    满意答案 gjek59ug 2013.10.10 采纳率:52%    等级:12 已帮助:9223人 (1)DOM解析 DOM是html和xml的应用程序接口(API),以层次结构(类似于树型)来组 ...

  4. maven中用dom4j解析xml文档

    1.需求分析 关于dom4j的详细使用方法请参考:https://blog.csdn.net/qq_41860497/article/details/84339091 在xml中存储了过滤器的的初始化 ...

  5. java 前言中不允许有内容_解析xml字符串时报“前言中不允许有内容”错误。

    一,问题出现经过: j基于java语言webservic服务端接收客户端 传来的xml字符串用 解析时总报:org.dom4j.DocumentException: Error on line 1 o ...

  6. cocos2d-x 3.0 使用Sax解析xml文档(解决中文显示问题)

    今天是个好日子,心想的事儿都能成,明天是个好日子,打开了家门儿迎春风... 恩,听着歌写文档生活就是这么享受. 今天以前的邻居大神突然在qq上赞了我一下,这让我异常激动啊..这还要从前前前几天说起,那 ...

  7. java document解析xml_[XML]在Java中用Document解析XML实例

    ------showByCondition输出结果------- e01 name:张三 tel:5128 email:txq512@sina.com e02 name:meixin tel:5252 ...

  8. java发布WCS服务到GeoServer服务器并解析XML生成可下载的WCS服务数据url(2022.2.14)

    GeoServer上的WCS服务发布调用及解析生成可下载为Tif的WCSUrl 2022.2.14 所用软件环境(Java.Tomcat.GeoServer.Google Browser.Eclips ...

  9. python3 xpath_Python 3中用XPath解析XML

    我有以下xml: Biscuits Wrapped Finished Biscuits Biscuits (Wrapped) Biscuits Sweet Finished Biscuits Bisc ...

最新文章

  1. 黑盒测试方法之边界值分析法
  2. 数据统计脚本(一周)
  3. Java线程优先级的概念
  4. 利用Minhash和LSH寻找相似的集合
  5. MySQL笔记4:desc命令的两个用法
  6. 【Python-ML】SKlearn库多元线性回归性能评估
  7. ES6 数值的扩展
  8. java数据库编程之JDBC
  9. 谷歌Apps vs.微软Office
  10. tasm报错illegal memory reference的解决办法
  11. Mac 下安装RabbitMQ及配置RabbitMQ可远程访问
  12. 盘点那些适合写api接口的工具
  13. 使用javascript实现点击复制到剪贴板
  14. 腾讯云TRTCCalling实时音视频说明文档
  15. HTML超链接标签—链接QQ在线聊天
  16. 很努力了,为什么我还在原地踏步?
  17. Windows显卡切换
  18. cs224n 2019 Lecture 9: Practical Tips for Final Projects
  19. MySQL_day2笔记
  20. 重现期Matlab\Python程序(Gumbel和广义极值分布)

热门文章

  1. 基于Proteus的四位数码管显示
  2. c语言创建excel文件6,怎么利用c语言创建excel文件
  3. 东西湖职业技术学院的计算机,武汉市东西湖职业技术学校
  4. Linux命令行窗口常用快捷键
  5. SAP AFAB折旧
  6. HR看过来:捕捉“大师球”程序员的错误做法
  7. AWS Certified Solutions Architect Associate 学习笔记2
  8. 写java接口的文档工具_【java】适合写接口文档的工具,或者文本语法
  9. 如何用单片机实现基于电磁感应的无线充电系统
  10. 《HelloGitHub》第 51 期