`
liujianguangaaa
  • 浏览: 235183 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

Android读写XML(中)——SAX

阅读更多

Android读写XML(上)——package说明 中, 详细介绍了使用 DOM方法读取XML文档,由于使用DOM方法需要将整个XML文档加载内存中,对系统资源占用比较多,这对内存比较紧张的Android系统来说,使用 DOM方法读取XML文档会有很大的限制。 使用SAX方法读取XML,对内存资源的占用的比较少,因此在嵌入式设备中极力推荐使用,Android也不例外,本篇幅详细说明Android中如何使 用SAX读取XML文档。

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的使用方法

  1. 首先,编写了解XML文档的结构,按照XML文档的结构,编写具体的数据结构,类似于:XXXXList,XXXXItem,最好与XML的文档保持一致。
  2. 其次,开始实现事件处理对象,Android SDK为我们提供了DefaultHandler,其继承了ContentHandler 、DTDHandler、 EntityResolver、 ErrorHandler的所有接口。我们在DefaultHandler的基础上,按照需求实现ContentHanlder的所有接口,这里需要注意 2个方面的问题:
    1. 事件处理的顺序,处理时间的位置:一般在startDocument()初始化工作,在endDocument()中收尾的处理工 作;startElement()—characters()—endDocument()是一个XML节点读取的过程,startElement()用 来初始判断,characters()获取节点的字符数据,endDocument()将数据写入数据结构。
    2. 异常SAXException的处理;
  3. 然后,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);
  4. 最后,在Activity中显示数据,一般先将XML中读取的数据,选择合适的Adaper对数据进行封装,然后使用ListView控件来显示数据。

以上就是SAX读取XML的过程,并显示出最终的数据。以上需要注意的是SAXParserFactory ,SAXParser类来自 javax.xml.parsers包中。

总结说明

SAX读取XML文档的方法,占用内存比较少,但是开发流程相比DOM就复杂多了,具体采用哪种方法比较合适,大家可以在开发的过程中来深刻体会之间的差别。

分享到:
评论

相关推荐

    Android XML解析——Sax解析XML

    本篇文章将重点讨论Android中的SAX(Simple API for XML)解析器,这是一种事件驱动的解析方法,适合处理大文件或内存有限的设备。 ### SAX解析原理 SAX解析器以流式方式读取XML文档,遇到元素、属性等结构时会触发...

    android开发之xml文件操作——SAX

    本项目以“SAX”为焦点,探讨如何在Android中使用SAX解析器处理XML文件。SAX(Simple API for XML)是一种事件驱动的解析器,它不像DOM解析器那样将整个XML文档加载到内存中,而是逐行读取,因此在处理大型XML文件时...

    XML——sax解析 极速入门易懂示例

    在Java中,使用SAX解析XML有以下几种方式: 1. **XMLReader**:这是SAX解析的核心组件,它提供了一组方法来配置解析器的行为。首先,我们需要通过`XMLReaderFactory`获取一个`XMLReader`实例,然后设置事件处理器...

    Android读写XML

    Android读写XML,SAX等方式

    Android读取XML文件(SAX)

    下面我们将详细讨论如何在Android环境中使用SAX解析XML文件。 一、SAX解析原理 SAX解析器按照XML文档的顺序逐个读取元素,当遇到元素开始、结束、属性、文本等事件时,会触发相应的回调函数。开发者需要实现`...

    Android读写XML.doc

    下面我们将详细讨论Android中XML读写的包和方法。 1. **包功能介绍** - `javax.xml`:包含XML规范定义的核心常量和功能。 - `javax.xml.parsers`:提供DOM和SAX解析XML文档的方法。 - `org.w3c.dom`:W3C提供的...

    xml.rar_android_android sax_android sax xml_java xml_sax

    - Android中的SAX解析器实现为`org.xml.sax.helpers.DefaultHandler`,开发者需要继承这个类并重写事件处理方法,如`startElement()`、`endElement()`和`characters()`。 - 示例代码:创建一个SAX解析器实例,设置...

    android解析XML文件样例SAX方法

    总的来说,SAX解析器在Android中提供了高效、低内存消耗的方式来处理XML文档。尽管它的编程模型相对复杂,但适合处理大型或结构复杂的XML文件。在实际开发中,应根据项目需求选择合适的XML解析方式,例如,如果XML...

    Android创建与解析XML(三)——详解Sax方式

    本文将深入讲解如何在Android中使用SAX解析XML以及如何通过SAX方式创建XML。 **1. SAX解析XML** SAX解析XML的基本流程是:创建SAXParserFactory,通过该工厂实例化SAXParser,然后设置事件处理器(ContentHandler...

    Android 创建与解析XML Sax方式

    本文将详细介绍如何在Android中使用SAX方式创建和解析XML。 ### 1. Android中创建XML文件 创建XML文件通常在服务器端完成,然后通过HTTP请求传递到Android客户端。不过,如果需要在本地生成XML,可以使用Java的`...

    Android中,使用SAX和PULL解析天气预报XML

    本文将深入探讨如何在Android中使用两种常见的XML解析技术——SAX(Simple API for XML)和PULL(Pull Parser)来解析天气预报的XML数据。这两种方法各有优缺点,适用于不同的场景。 首先,我们来看SAX解析器。SAX...

    SAX--XML文件读写

    在Android开发中,由于内存限制和性能优化的需求,通常会选择SAX(Simple API for XML)解析器来读取XML文件,而非DOM(Document Object Model)解析器,因为SAX是基于事件驱动的,它按需逐个处理XML元素,占用内存...

    android解析XML总结(SAX、Pull、Dom三种方式)

    本文将深入探讨三种在Android中解析XML的主要方法:SAX(Simple API for XML)、Pull解析器和DOM(Document Object Model),并结合代码实现进行详细阐述。 **1. SAX解析** SAX(Simple API for XML)是一种事件...

    android xml文件解析 SAX

    本篇将详细介绍Android中的SAX(Simple API for XML)解析方式。 SAX是一种事件驱动的XML解析器,它不会像DOM解析器那样将整个XML文档加载到内存中,而是逐行读取,遇到每个元素或属性时触发相应的事件回调。这种...

    Android读写XML.docx

    虽然Android并未包含Java标准库中的所有XML功能,但大部分关键API得以保留,使得开发者可以方便地进行XML操作。 Android支持的XML解析API主要包括以下几种: 1. **DOM (Document Object Model)**:DOM是一种基于树...

    Android XML解析—— Pull解析XML(待完善)

    在Android开发中,XML是一种广泛使用的数据交换格式,用于存储和传输数据。XML解析是将XML文档转换为程序可以理解的结构化数据的过程。本文主要关注Android中的Pull解析方式来处理XML,这是一种轻量级、低内存占用的...

    Android XML解析之SAX解析

    在Android中,有多种解析XML的方法,如DOM、SAX和Pull解析器。本篇主要讨论的是SAX解析,这是一种基于事件驱动的、高效的解析方式,适合处理大体积的XML文件。 SAX解析器逐行读取XML文档,当遇到开始标签、结束标签...

    Google.Android开发入门与实战第12章.Android综合案例一——RSS阅读器实例

    3. **XML解析**:RSS内容通常以XML格式存储,因此开发者需要熟悉如何在Android中使用XML解析库,如DOM、SAX或Pull解析器,来解析RSS feed。 4. **网络请求**:RSS阅读器需要从服务器获取RSS数据,这涉及到了网络...

    xml——————表单资源

    在处理XML时,我们通常会用到XML解析器,它们分为DOM(Document Object Model)解析器、SAX(Simple API for XML)解析器和StAX(Streaming API for XML)解析器。DOM解析器将整个XML文档加载到内存中,形成一个树形...

    android 读写xml

    下面我们将深入探讨Android中读写XML的相关知识点。 一、XML解析器 Android中主要有两种类型的XML解析器:DOM解析器和SAX解析器。 1. DOM解析器(Document Object Model): DOM解析器将整个XML文档加载到内存中,...

Global site tag (gtag.js) - Google Analytics