SAX采用基于事件驱动的处理方式,它将XML文档转换成一系列的事件,由单独的事件处理器来决定如何处理。为了了解如何使用SAX API处理XML文档,这里介绍一下SAX所使用的基于事件驱动的处理模式。
基于事件驱动的处理模式
基于事件的处理模式主要围绕着事件源以及事件处理器来工作的。一个可以产生事件的对象被称为事件源,而可以对事件产生响应的对象就被叫做事件处理器。事件源与事件处理对象是通过在事件源中的事件注册方法连接的。当事件源产生时间后,调用事件处理器相应的方法,一个事件获得处理。当在事件源调用事件处理器中特定方法的时候,会传递个事件标志以及其响应事件的状态信息,这样事件处理器才能够根据事件信息来决定自己的行为。
在SAX接口中,事件源是org.xml.sax包中的XMLReader,它通过 parser()方法来开始解析XML文档,并根据文档的内容产生事件。而事件处理器则是org.xml.sax包中的ContentHander、 DTDHander、ErrorHandler,以及EntityResolver这4个接口,它们分别处理事件源在解析XML文档过程中产生的不同种类的事件。而事件源XMLReader与这4个事件处理器的连接是通过在XMLReader中的相应事件处理器注册方法setXXXX()来完成的,详细介绍请见下表:
SAXHanlder
以上的4个事件源处理器接口,在开发中没有必要直接从这4个接口直接继承,因为org.xml.sax.helper包为我们提供了类 DefaultHandler,其继承了这4个个接口,在实际开发中直接从DefaultHandler继承并实现相关函数就可以了。在这4个接口中,最重要的是ContentHanlder接口,下面就其中的方法加以说明,如下:
ContentHanlder
以上就是解析一个XML文档,事件处理的过程。这里我们对 org.xml.sax.XMLReader中的方法做下补充说明:除了前面介绍的一系列事件处理器注册方法set/getXXXX()外,还有个重要的函数:parse(InputSource input)–Parse an XML document,开始解析一个XML文档。
按照应用程序开发的流程,简要介绍下SAX的使用方法
首先,编写了解XML文档的结构,按照XML文档的结构,编写具体的数据结构,类似于:XXXXList,XXXXItem,最好与XML的文档保持一致。
其次,开始实现事件处理对象,Android SDK为我们提供了DefaultHandler,其继承了ContentHandler 、DTDHandler、 EntityResolver、 ErrorHandler的所有接口。我们在DefaultHandler的基础上,按照需求实现ContentHanlder的所有接口,这里需要注意 2个方面的问题:
事件处理的顺序,处理时间的位置:一般在startDocument()初始化工作,在endDocument()中收尾的处理工作;startElement()—characters()—endDocument()是一个XML节点读取的过程,startElement()用来初始判断,characters()获取节点的字符数据,endDocument()将数据写入数据结构。
异常SAXException的处理;
然后,XML实体解析,过程如下:
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser();
XMLReader xmlreader = parser.getXMLReader();
URL rrl = new URL(urlstring);
InputSource is = new InputSource(url.openStream());
Xmlreader.setContentHanlder(XXXX);
Xmlreader.parse(is);
最后,在Activity中显示数据,一般先将XML中读取的数据,选择合适的Adaper对数据进行封装,然后使用ListView控件来显示数据。
以上就是SAX读取XML的过程,并显示出最终的数据。以上需要注意的是SAXParserFactory ,SAXParser类来自 javax.xml.parsers包中。
总结说明
SAX读取XML文档的方法,占用内存比较少,但是开发流程相比DOM就复杂多了,具体采用哪种方法比较合适,大家可以在开发的过程中来深刻体会之间的差别。
(转载自:互联网 引用网址:
http://blog.163.com/guozioo@126/blog/static/64086947201063021942168/)
分享到:
相关推荐
android中读写xml文件简单demo,可以通过此代码来简单的读取xml配置文件
Android SDK提供了丰富的API来支持XML的读写,这些API主要来自于Java SDK,同时也有一些特定于Android的实现。下面我们将详细讨论Android中XML读写的包和方法。 1. **包功能介绍** - `javax.xml`:包含XML规范定义...
### Android读写XML知识点详解 #### 一、概述 在Android开发中,XML(Extensible Markup Language,可扩展标记语言)是一种广泛使用的数据交换格式。它不仅被用于配置文件(如`AndroidManifest.xml`),还常用于...
2. javax.xml.parsers.DocumentBuilderFactory:用于创建DOM解析器,通过Document对象对XML进行操作。 三、XML读取步骤 1. 创建解析器:根据需求选择合适的解析器,如使用XmlPullParserFactory获取XmlPullParser...
这种方式的优点是操作灵活,但缺点是对内存和CPU资源消耗较大,适合于小型XML文档和资源充足的环境。 2. **SAX (Simple API for XML)**:SAX是一种基于事件驱动的解析器,它在解析XML文档时触发特定事件,例如元素...
本实例将探讨在Android中对XML进行读取、写入和解析的三种基本操作。 一、XML的读取 在Android中,我们通常使用`XmlPullParser` API来解析XML文件。`XmlPullParser`提供了事件驱动的解析方式,通过一系列的next()...
首先,XML(eXtensible Markup Language)是一种自定义标记语言,它的结构清晰,易于读写,适合于数据交换和存储。在Android应用中,我们通常使用两种方式来解析XML:DOM(Document Object Model)解析器和SAX...
Android 开发 XML 语法规则 Android 开发中,XML 语法规则非常重要,以下是 XML 语法规则的详细介绍: 1.所有 XML 元素都须有关闭标签 在 XML 中,所有元素都必须有关闭标签,否则将会出现错误。这与 HTML 不同...
`SharedPreferences`类提供了方便的接口,用于读写这些XML文件中的键值对。 总结,XML在Android开发中扮演着至关重要的角色,无论是在界面设计、数据存储还是偏好设置等方面都有广泛的应用。理解并熟练掌握XML的...
本例使用多种方式获取本地XML文件,还有通过url获取XML文件,使用Android内置的PULL解析器对XML文件进行解析,例子是解析我国各个省市。 《Android解析XML文件》博文路径:...
在Android开发中,XML(eXtensible Markup Language)是一种常用的数据存储和交换格式,尤其在应用程序的配置、布局和网络通信中发挥着重要作用。XML的结构清晰,易于人类阅读和机器解析,使得它成为Android平台上的...
在Android开发中,XML(可扩展标记语言)和JSON(JavaScript Object Notation)都是常见的数据交换格式。XML因其结构化特性适用于复杂的文档存储,而JSON则以其轻量级、易于阅读和编写的特点广泛用于Web服务的数据...
在Android开发中,XML文件常用于存储数据、配置或布局信息。XML(eXtensible Markup Language)是一种结构化标记语言,易于阅读和编写,同时机器也能方便地解析和生成。本篇将深入探讨Android中解析XML文件的方法,...
4. 安全性:如果存储敏感信息,如用户密码,应该对XML数据进行加密。 5. 性能优化:避免频繁读写大文件,尽量减少IO操作,使用缓存提高性能。 以下是一个简单的XML保存示例代码: ```java File file = new File...
DOM解析的优点是提供了一个整体视图,可以任意位置遍历和修改XML文档,但缺点是占用内存大,对大型XML文件不友好。 在Android中,DOM解析可以通过`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom....
- Android系统内置了对XML的支持,可以使用java.util DOM或SAX解析器,或者使用Android的XmlPullParser接口来生成XML。最常用的是DOM,因为它允许以树形结构处理XML文档,便于操作。 5. **字符资源与XML文件**: ...
这个过程涉及到了XML解析、事件处理、数据模型构建以及UI展示等多个环节,需要对Android开发有深入的理解。在实际项目中,可能还需要根据具体需求进行优化和调整,比如添加错误处理、网络请求等功能。
在Android应用开发中,XML(eXtensible Markup Language)是一种常见的数据格式,用于存储和传输数据。老罗的Android视频教程深入浅出地讲解了如何在Android平台上解析XML文件,这对于开发者来说是非常重要的技能。...