`
wangminshe89
  • 浏览: 690724 次
文章分类
社区版块
存档分类
最新评论

Android学习笔记(七)-XML解析与生成:SAX、DOM、PULL(推荐)

 
阅读更多

在Android平台上可以使用Simple API for XML(SAX) 、 Document Object Model(DOM)和Android附带的pull解析器解析XML文件,

1、Simple API for XML(SAX)

SAX是一个解析速度快并且占用内存少的xml解析器,非常适合用于Android等移动设备。 SAX解析XML文件采用的是事件驱动,也就是说,它并不需要解析完整个文档,在按内容顺序解析文档的过程中,SAX会判断当前读到的字符是否合法XML语法中的某部分,如果符合就会触发事件。所谓事件,其实就是一些回调(callback)方法,这些方法(事件)定义在ContentHandler接口。

下面是一些ContentHandler接口常用的方法:
startDocument()
当遇到文档的开头的时候,调用这个方法,可以在其中做一些预处理的工作。
endDocument()
和上面的方法相对应,当文档结束的时候,调用这个方法,可以在其中做一些善后的工作。
startElement(String namespaceURI, String localName, String qName, Attributes atts)
当读到一个开始标签的时候,会触发这个方法。namespaceURI就是命名空间,localName是不带命名空间前缀的标签名,qName是带命名空间前缀的标签名。通过atts可以得到所有的属性名和相应的值。要注意的是SAX中一个重要的特点就是它的流式处理,当遇到一个标签的时候,它并不会纪录下以前所碰到的标签,也就是说,在startElement()方法中,所有你所知道的信息,就是标签的名字和属性,至于标签的嵌套结构,上层标签的名字,是否有子元属等等其它与结构相关的信息,都是不得而知的,都需要你的程序来完成。这使得SAX在编程处理上没有DOM来得那么方便。
endElement(String uri, String localName, String name)
这个方法和上面的方法相对应,在遇到结束标签的时候,调用这个方法。
characters(char[] ch, int start, int length)
这个方法用来处理在XML文件中读到的内容,第一个参数为文件的字符串内容,后面两个参数是读到的字符串在这个数组中的起始位置和长度,使用new String(ch,start,length)就可以获取内容。

只要为SAX提供实现ContentHandler接口的类,那么该类就可以得到通知事件(实际上就是SAX调用了该类中的回调方法)。因为ContentHandler是一个接口,在使用的时候可能会有些不方便,因此,SAX还为其制定了一个Helper类:DefaultHandler,它实现了ContentHandler接口,但是其所有的方法体都为空,在实现的时候,你只需要继承这个类,然后重写相应的方法即可。

SAXPersonService.java




2、Document Object Model(DOM)

DOM解析XML文件时,会将XML文件的所有内容以文档树方式存放在内存中,然后允许您使用DOM API遍历XML树、检索所需的数据。使用DOM操作XML的代码看起来是比较直观的,并且在编码方面比基于SAX的实现更加简单。但是,因为DOM需要将XML文件的所有内容以文档树方式存放在内存中,所以内存的消耗比较大,特别对于运行Android的移动设备来说,因为设备的资源比较宝贵,所以建议还是采用SAX来解析XML文件,当然,如果XML文件的内容比较小采用DOM也是可行的

DOMPersonService.java



3、Android附带的pull解析器-推荐方式

Pull解析器的运行方式与 SAX 解析器相似。它提供了类似的事件,如:开始元素和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件。事件将作为数值代码被发送,因此可以使用一个switch对感兴趣的事件进行处理。当元素开始解析时,调用parser.nextText()方法可以获取下一个Text类型节点的值。

有些时候,我们需要生成一个XML文件,生成XML文件的方法有很多,如:可以只使用一个StringBuilder组拼XML内容,然后把内容写入到文件中;或者使用DOM API生成XML文件,或者也可以使用pull解析器生成XML文件,这里推荐大家使用Pull解析器。

PULLPersonService.java


最后,列出项目其余相关代码:


data.xml


AndroidManifest.xml



Person.java


PersonServiceTest.java



分享到:
评论

相关推荐

    android xml 的解析 sax dom pull 解析

    在Android开发中,有三种主要的XML解析技术:SAX(Simple API for XML)、DOM(Document Object Model)和PULL(Pull Parser)。下面将详细介绍这三种解析方式及其在Android中的应用。 1. SAX解析: SAX(Simple ...

    Android XML解析 SAX DOM Pull

    在Android中,有三种主要的XML解析方式:SAX(Simple API for XML)、DOM(Document Object Model)和Pull Parser。下面将详细介绍这三种解析方式,并结合person类的实例进行讲解。 1. SAX解析: SAX是一种事件驱动...

    XML四种解析方式------DOM SAX JDOM DOM4J

    在处理XML文档时,有多种解析方式,包括DOM、SAX、JDOM和DOM4J。每种解析方式都有其特性和适用场景,下面将详细探讨这四种解析方法。 1. DOM(Document Object Model) DOM解析器将整个XML文档加载到内存中,形成一...

    android学习笔记1--SAX解析XML

    ### Android学习笔记1—SAX解析XML #### SAX解析XML概览 在Android开发中,XML文件被广泛用于布局设计、资源定义等场景。而为了处理这些XML文件,开发者需要了解不同的XML解析技术,其中SAX(Simple API for XML)...

    Android XML解析(DOM、PULL、SAX三种方式)

    Android系统提供了三种主要的XML解析方式:DOM(Document Object Model)、PULL(Pull Parser)和SAX(Simple API for XML)。每种方法都有其独特的特性和应用场景,下面将详细介绍这三种XML解析方式。 1. DOM解析...

    XML-java.rar_XML SAX_sax_sax xml_sax 解析 xml_xml using dom

    Java作为一种强大的编程语言,提供了多种解析XML文档的方法,其中包括DOM(Document Object Model)和SAX(Simple API for XML)。本压缩包文件“XML-java.rar”包含了关于使用Java解析XML的实例,特别强调了SAX解析...

    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解析示例

    SAX(Simple API for XML)是XML的一种解析器,它采用事件驱动的方式处理XML文档,非常适合处理大型或内存有限的设备上的XML文件,如Android手机。 SAX解析的基本原理是,当解析器读取XML文档时,遇到每个元素、...

    SAX,PULL,DOM解析XML

    在处理XML文档时,有三种主要的解析方式:SAX(Simple API for XML)、PULL(Pull Parser)和DOM(Document Object Model)。下面将详细解释这三种解析方法及其特点。 1. SAX(Simple API for XML) SAX是一种基于...

    VTD-XML 不同于SAX和DOM的XML高效解析器

    在处理XML时,有多种解析器可供选择,包括SAX(Simple API for XML)、DOM(Document Object Model)以及我们今天要讨论的主题——VTD-XML。 **VTD-XML解析器** VTD-XML是由XimpleWare公司开发的一种高效的XML解析...

    Android SAX、DOM、Pull解析xml文件案例讲解

    本篇将详细讲解Android中三种主要的XML解析方式:SAX(Simple API for XML)、DOM(Document Object Model)和Pull解析器,并通过案例来帮助理解它们的工作原理和应用场景。 ### 1. SAX解析器 SAX(Simple API for...

    android 三种方式解析XML(DOM,Pull,Sax) 带文件编码识别

    本篇文章将深入探讨三种在Android中解析XML的方法:DOM(文档对象模型)、Pull(拉取解析器)和SAX(简单API for XML),并且会特别强调如何识别文件编码。 首先,DOM解析是将整个XML文件加载到内存中形成一个树形...

    通过SAX和PULL来解析XML,同时生成xml

    PULL解析器是Android平台上的特有解析方式,其工作原理与SAX类似,但API更加简化,更适合移动设备资源有限的情况。在Android中,可以使用`XmlPullParser`接口来实现PULL解析。使用PULL解析XML的步骤如下: 1. 获取`...

    Android中XML的解析Pull//SAX/DOM

    对于XML的处理,Android提供了三种主要的解析方式:Pull解析器、SAX(Simple API for XML)解析器以及DOM(Document Object Model)解析器。这三种方法各有优缺点,适用于不同的场景需求。 1. Pull解析器: ...

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

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

    Android ,SAX,DOM,PULL解析XML

    在Android平台上,有三种主流的XML解析方式:SAX(Simple API for XML)、DOM(Document Object Model)和PULL(Pull Parser)。这三种方法各有特点,适用于不同的场景。 1. **SAX解析**: SAX解析器是一种事件...

    dom4j---xml解析jar包

    **DOM4J——XML解析库详解** XML(eXtensible Markup Language)作为一种标记语言,广泛应用于数据交换、配置文件和文档存储等领域。在Java环境中,解析XML文档时,我们通常会遇到各种库,其中DOM4J是一个非常流行...

    xml.rar_android_android sax_android sax xml_java xml_sax

    本资料包“xml.rar”主要关注Android环境下的XML解析,特别是SAX解析器,同时也涵盖了DOM和Pull解析方式。 1. XML基本概念: XML是一种自描述性的标记语言,它通过标签来定义数据结构。每个XML文档都包含元素、...

    android, pull,sax,dom 解析

    本篇文章将深入探讨Android中的三种主要XML解析方式:SAX(Simple API for XML)、DOM(Document Object Model)和Pull解析。 1. **SAX解析**: SAX解析是一种事件驱动的解析方式,它不会一次性加载整个XML文档到...

Global site tag (gtag.js) - Google Analytics