- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
android SAX解析
Android SAX解析XML解析XML的方式有很多种,大家比较熟悉的可能就是DOM解析。DOM(文件对象模型)解析:解析器读入整个文档,然后构建一个驻留内存的树结构,然后代码就可以根据DOM接口来操作这个树结构了。 优点:整个文档读入内存,方便操作:支持修改、删除和重现排列等多种功能。 缺点:将整个文档读入内存中,保留了过多的不需要的节点,浪费内存和空间。 使用场合:一旦读入文档,还需要多次对文档进行操作,并且在硬件资源充足的情况下(内存,CPU)。为了解决DOM解析存在的问题,就出现了SAX解析。其特点为: 优点:不用实现调入整个文档,占用资源少。尤其在嵌入式环境中,如android,极力推荐使用SAX解析。 缺点:不像DOM解析一样将文档长期驻留在内存中,数据不是持久的。如果事件过后没有保存数据,数据就会丢失。 使用场合:机器有性能限制。SAX解析XML文档采用事件驱动模式。什么是事件驱动模式?它将XML文档转换成一系列的事件,由单独的事件处理器来决定如何处理。基于事件驱动的处理模式主要是基于事件源和事件处理器(或者叫监听器)来工作的。一个可以产生事件的对象叫做事件源,而一个可以针对事件做出响应的对象就被叫做事件处理器。在SAX接口中,事件源是org.xml.sax包中的XMLReader,他通过parse()方法开始解析XML文档,并根据文档内容产生事件。而事件处理器则是org.xml.sax包中的ContentHandler、DTDHandler、ErrorHandler,以及EntityResolver这四个接口。他们分别处理事件源在解析过程中产生不同类的事件(其中DTDHandler为解析文档DTD时所用)。详细介绍如下表:在上述四个接口中,最重要的就是ContentHandler这个接口,下面是对这个接口方法的说明://设置一个可以定位文档内容事件发生位置的定位器对象publicvoid setDocumentLocator(Locator locator)//用于处理文档解析开始事件publicvoid startDocument()throws SAXException//处理元素开始事件,从参数中可以获得元素所在名称空间的uri,元素名称,属性类表等信息publicvoid startElement(String namespacesURI , String localName , String qName , Attributes atts) throws SAXException//处理元素结束事件,从参数中可以获得元素所在名称空间的uri,元素名称等信息publicvoid endElement(String namespacesURI , String localName , String qName) throws SAXException//处理元素的字符内容,从参数中可以获得内容publicvoid characters(char[] ch , int start , int length) throws SAXException这里再介绍下XMLReader中的方法。//注册处理XML文档解析事件ContentHandlerpublicvoid setContentHandler(ContentHandler handler)//开始解析一个XML文档publicvoid parse(InputSorce input) throws SAXExceptionSAX实现实体解析的步骤:在android中使用SAX是有迹可循的,完全可以按照下面的方法就可以轻松找到xml里的tag,然后得到想要的内容。具体实现步骤如下:(一)第一步:新建一个工厂类SAXParserFactory,代码如下:SAXParserFactory factory = SAXParserFactory.newInstance();(二)第二步:让工厂类产生一个SAX的解析类SAXParser,代码如下:SAXParser parser = factory.newSAXParser();(三)第三步:从SAXPsrser中得到一个XMLReader实例,代码如下:XMLReader reader = parser.getXMLReader();(四)第四步:把自己写的handler注册到XMLReader中,一般最重要的就是ContentHandler,代码如下:RSSHandler handler = new RSSHandler();reader.setContentHandler(handler);(五)第五步:将一个xml文档或者资源变成一个java可以处理的InputStream流后,解析正式开始
您可能关注的文档
- 20以内退内减法.ppt
- 20周第二课时课时备课.doc
- 2015高一数学第一次月考试卷.doc
- 20个极简主义的网站设计.doc
- 21.撑起一片蔚蓝的“心”空.doc
- 21世纪技能测试二(全对100分).doc
- 21.《与朱元思书》 李.ppt
- 23号第二讲:代数式的化简求值问题(学生卷).doc
- 2305采面供电设计.doc
- 2014届高考(苏教版)生物大一轮课件:第4讲 细胞膜和细胞核(共91张PPT).ppt
- 2024年江西省高考政治试卷真题(含答案逐题解析).pdf
- 2025年四川省新高考八省适应性联考模拟演练(二)物理试卷(含答案详解).pdf
- 2025年四川省新高考八省适应性联考模拟演练(二)地理试卷(含答案详解).pdf
- 2024年内蒙通辽市中考化学试卷(含答案逐题解析).docx
- 2024年四川省攀枝花市中考化学试卷真题(含答案详解).docx
- (一模)长春市2025届高三质量监测(一)化学试卷(含答案).pdf
- 2024年安徽省高考政治试卷(含答案逐题解析).pdf
- (一模)长春市2025届高三质量监测(一)生物试卷(含答案).pdf
- 2024年湖南省高考政治试卷真题(含答案逐题解析).docx
- 2024年安徽省高考政治试卷(含答案逐题解析).docx
文档评论(0)