本站首页    管理页面    写新日志    退出                                          --==~欢迎光临FoxWolf的Blog~==--   



 日志搜索


«July 2025»
12345
6789101112
13141516171819
20212223242526
2728293031


公告


我的分类

日志更新

最新评论

留言板

链接

 


Blog信息
blog名称:FoxWolf
日志总数:127
评论数量:246
留言数量:0
访问次数:850095
建立时间:2006年5月31日




[必须掌握]简说XML的解析方式(DOM,SAX,StAX)
文章收藏,  软件技术,  电脑与网络

FoxWolf 发表于 2008/6/11 14:49:47

简说XML的解析方式(DOM,SAX,StAX) 一般来说,解析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文件.参考资料:An Introduction to StAXHaving Good SAX with Java


阅读全文(6462) | 回复(1) | 编辑 | 精华
 


回复:简说XML的解析方式(DOM,SAX,StAX)
文章收藏,  软件技术,  电脑与网络

D(游客)发表评论于2009/2/18 23:36:25

说得太好了!!!


个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


» 1 »

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.221 second(s), page refreshed 144775958 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号