实现XML解析的第二种方式:SAX解析器_Tomcat, WebLogic及J2EE讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Tomcat, WebLogic及J2EE讨论区 »
总帖数
7
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2547 | 回复: 6   主题: 实现XML解析的第二种方式:SAX解析器        下一篇 
fan.wang
注册用户
等级:少尉
经验:392
发帖:23
精华:0
注册:1970-1-1
状态:离线
发送短消息息给fan.wang 加好友    发送短消息息给fan.wang 发消息
发表于: IP:您无权察看 2015-12-1 16:37:05 | [全部帖] [楼主帖] 楼主

第二种方式:SAX解析器:

  SAX(Simple API for XML)解析器是一种基于事件的解析器,事件驱动的流式解析方式是,从文件的开始顺序解析到文档的结束,不可暂停或倒退。它的核心是事件处理模式,

主要是围绕着事件源以及事件处理器来工作的。当事件源产生事件后,调用事件处理器相应的处理方法,一个事件就可以得到处理。在事件源调用事件处理器中特定方法的时候,

还要传递给事件处理器相应事件的状态信息,这样事件处理器才能够根据提供的事件信息来决定自己的行为。  

  SAX解析器的优点是解析速度快,占用内存少。非常适合在Android移动设备中使用。

SAX的工作原理:SAX的工作原理简单地说就是对文档进行顺序扫描,

当扫描到文档(document)开始与结束、元素(element)开始与结束、文档(document)结束等地方时通知事件处理函数,由事件处理函数做相应动作,然后继续同样的扫描,直至文档结束。

 在SAX接口中,事件源是org.xml.sax包中的XMLReader,它通过parser()方法来解析XML文档,并产生事件。

事件处理器是org.xml.sax包中ContentHander、DTDHander、ErrorHandler,以及EntityResolver这4个接口。XMLReader通过相应事件处理器注册方法setXXXX()来完成的与ContentHander、DTDHander、ErrorHandler,以及EntityResolver这4个接口的连接。

常用的SAX接口和类:

 Attrbutes:用于得到属性的个数、名字和值。  

 ContentHandler:定义与文档本身关联的事件(例如,开始和结束标记)。大多数应用程序都注册这些事件。

 DTDHandler:定义与DTD关联的事件。它没有定义足够的事件来完整地报告DTD。如果需要对DTD进行语法分析,请使用可选的DeclHandler。

 DeclHandler是SAX的扩展。不是所有的语法分析器都支持它。

 EntityResolver:定义与装入实体关联的事件。只有少数几个应用程序注册这些事件。

 ErrorHandler:定义错误事件。许多应用程序注册这些事件以便用它们自己的方式报错。

 DefaultHandler:它提供了这些接LI的缺省实现。在大多数情况下,为应用程序扩展DefaultHandler并覆盖相关的方法要比直接实现一个接口更容易。

 详见下表:

 

  

 

 可知,我们需要XmlReader 以及DefaultHandler来配合解析xml。

 下面是SAX的解析流程:

  





赞(0)    操作        顶端 
容景93
注册用户
等级:上士
经验:254
发帖:0
精华:0
注册:2015-12-4
状态:离线
发送短消息息给容景93 加好友    发送短消息息给容景93 发消息
发表于: IP:您无权察看 2015-12-8 17:46:20 | [全部帖] [楼主帖] 2  楼

进来看看~



赞(0)    操作        顶端 
夜华君93
注册用户
等级:下士
经验:190
发帖:0
精华:0
注册:2015-12-8
状态:离线
发送短消息息给夜华君93 加好友    发送短消息息给夜华君93 发消息
发表于: IP:您无权察看 2015-12-30 9:49:26 | [全部帖] [楼主帖] 3  楼



赞(0)    操作        顶端 
filogra
注册用户
等级:少校
经验:1408
发帖:13
精华:0
注册:2015-6-2
状态:离线
发送短消息息给filogra 加好友    发送短消息息给filogra 发消息
发表于: IP:您无权察看 2016-5-4 22:59:01 | [全部帖] [楼主帖] 4  楼

很强大的样子……



赞(0)    操作        顶端 
山友木樨
注册用户
等级:少校
经验:1040
发帖:9
精华:0
注册:2015-6-1
状态:离线
发送短消息息给山友木樨 加好友    发送短消息息给山友木樨 发消息
发表于: IP:您无权察看 2016-5-5 8:54:34 | [全部帖] [楼主帖] 5  楼

先看看



赞(0)    操作        顶端 
duff
注册用户
等级:少校
经验:968
发帖:0
精华:0
注册:2015-7-22
状态:离线
发送短消息息给duff 加好友    发送短消息息给duff 发消息
发表于: IP:您无权察看 2016-5-6 7:46:31 | [全部帖] [楼主帖] 6  楼

学习一下



赞(0)    操作        顶端 
arcona
注册用户
等级:少校
经验:1100
发帖:10
精华:0
注册:2015-6-1
状态:离线
发送短消息息给arcona 加好友    发送短消息息给arcona 发消息
发表于: IP:您无权察看 2016-8-19 9:39:51 | [全部帖] [楼主帖] 7  楼

顶一个~



赞(0)    操作        顶端 
总帖数
7
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论