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

一、 SAX DOM 的比较

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

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

二、 SAX的原理:

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

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

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

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值