您的位置:首页 > 其它

XML文件解析学习总结

2014-01-16 11:13 162 查看
使用android平台解析XML,主要使用SAX标准,在日常开发中,通常有两种比较常见的方式,来解析XML,

一种是SAX 方式,它是逐行的扫描这个文档,一边扫描,一边解析

它比DOM解析有个优点,就是你可以在解析文档的任意时刻来停止这次解析

它的缺点:1相对而言相对复杂一点

2如果有个XML,用SAX解析没问题,但是如果你想向XML中加入东西或删除东西就比较麻烦

另一种方式是DOM,就是所谓的文档对象模型,即把XML看成一棵树,有根节点,根节点下面有子节点,然后一直到下面的叶节点,DOM解析XML的时候,会先把XML全部装载到内存中,然后解析成一颗树,然后在这棵树上进行相应的操作,比如添加或删除结点等,

它的优点就是操作起来非常方便,缺点是如果要解析的XML比较大,性能就会出现一些问题,因为需要把XML先装载进来

1 什么是SAX

SAX,全称Simple API for XML,既是指一种接口,也是指一个软件包,作为接口,SAX是事件驱动型XML解析的一个标准接口,制定这个标准是为了解析XML文档

2 SAX 基本原理

SAX的工作原理简单的说就是对文档进行顺序扫描,当扫描到文档(document)的开始与结束,元素(element)的开始与结束等地方时通知时间处理函数,由事件处理函数做相应动作,然后继续同样的扫描,直至文档的结束

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



SAX模型:



SAX 解析的基本过程:

左边第一列的第一个是SAX解析的工厂,使用的是工厂模式,第一列第二个是SAX的解析器,SAX解析器产生一个Reader,就是读取文件,在Reader上面,我们可以注册一些接口,比如内容处理的,错误处理的有处理DTD的,有处理文档当中的实体的,然后把文档加载进来,即SAX Reader逐行读取XML文档并解析,在注册的接口函数里面都有一些事件处理函数,我们要做的事情,就是实现这些接口,在实现类当中去覆盖接口当中的方法,即当SAX Reader解析文档的时候,我们要做的事情都写在这个方法中

3 SAX常用接口

contenHandler是java类包中一个特殊的SAX接口,位于

Org,xml,sax包中,该接口封装了一些对事件处理的一些方法,当XML解析器开始解析XML文档时,它会遇到一些特殊的事件,比如文档的开头与结束等当遇到这些事件时,XML解析器会调用ContentHandler接口中相应的方法来相应事件

ContentHandler接口的方法主要有以下几种:



4 SAX解析

如何解析XML呢,步骤如下

(1)创建事件处理程序,就是接口的实现类

(2)创建SAX解析器

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

(4)对文档进行解析,将每个事件发送给处理程序
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: