Android学习笔记13——XML文件解析

来源:互联网 发布:linux bc 缩写 编辑:程序博客网 时间:2024/04/30 23:46

一、SAXDOM的比较

a) SAXSimple API for XML的简写,它是一个XML解析的标准,也是一组API(软件包)。它的解析过程是逐行扫描XML文档,一种事件驱动模型。它的缺点是对XML的读取很方便,解析过程可以随时终止,但是插入、删除等操作很困难。

b) DOMDocument Object Model的简写,它把XML文档视为一棵树。解析文档之前,必须先把文档全部载入内存之中。因此效率不高,但可以方便的插入,删除等。

二、SAX的原理:

对文档进行顺序扫描,当扫描到文档的开始与结束、元素的开始与结束等地方时,通知事件处理函数,由事件处理函数作出相应动作,然后继续同样的扫描,直到文档结束。

大多数SAX实现都会产生以下类型的事件:

1、在文档的开始和结束时触发文档处理事件;

2、在文档内每一个XML元素接受解析的前后触发元素事件;

3、任何元数据通常都由单独的事件交付;

4、任何处理文档的DTDschema时产生的DTDschema事件;

5、产生错误事件用来通知主机应用程序解析错误。

三、SAX模型

三、SAX的解析过程

对于如下文档

<doc><para>Hello, world!</para></doc>

解析过程中会产生如下一系列事件:

start document

start element: doc

start element: para

characters: Hello, world!

end element: para

end element: doc

end document
1、创建事件处理器

2、创建SAX解析器

3、将事件处理程序分配给解析器

4、对文档进行解析,将每个事件分配给处理程序。

四、SAX的常用接口

a) org.xml.sax.ContentHandler 接口:封装了一些对事件处理的方法:

i. void startDocument()

ii. void endDocument()

iii. startElement(

String uri, // 命名空间的URI

String localName, // 标签的名字,不包含前缀

String qName,  // 标签的名字,包含前缀

Attributes atts // 标签的所有属性

)

iv. endElement(

String uri, 

String localName, 

String qName)

v. void characters(

char[] ch,  // 要解析的字符串

int start,  // 开始位置

int length // 长度

)

六、对元素属性的操作:

startElement方法中:

 

示例程序,对以下XML文件的解析

 

MyContentHandler.java

 

Activity