`
jandroid
  • 浏览: 1894393 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

详解android解析Xml的三种方式——DOM、SAX以及XMLpull

 
阅读更多

今天学习了android解析Xml的三种方式——DOM、SAX以及XMLpull,这里对它们进行总结。


如果理解有误,欢迎指正 ^_*

一、DOM方式解析:

xml是先把xml文档都读到内存中,然后再用DOM API来访问树形结构,并获取数据。这个写起来很简单,但是很消耗内存。要是数据过大,手机不够牛逼,可能手机直接死机。

常用的DoM接口和类:

Document:该接口定义分析并创建DOM文档的一系列方法,它是文档树的根,是操作DOM的基础。
Element:该接口继承Node接口,提供了获取、修改XML元素名字和属性的方法。
Node:该接口提供处理并获取节点和子节点值的方法。
NodeList:提供获得节点个数和当前节点的方法。这样就可以迭代地访问各个节点。
DOMParser:该类是Apache的Xerces中的DOM解析器类,可直接解析XML文件。

二、SAX解析技术:

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

常用的接口和类:

Attrbutes:用于得到属性的个数、名字和值。
DefaultHandler:它提供了这些接LI的缺省实现。在大多数情况下,为应用程序扩展DefaultHandler并覆盖相关的方法

三、XMLPull

XML pull提供了开始元素和结束元素。当某个元素开始时,我们可以调用parser.nextText0从XML文档中提取所有字符数据。当解释到一个文档结束时,自动生成EndDocument
事件。

常用的接口和类:

XmlPullParser:XML pull解析器是一个在XMLPULL VlAP1中提供了定义解析功能的接口。
XmlSerializer:它是一个接口,定义了XML信息集的序列。
XmlPullParserFactory:这个类用于在XMPULL V1 API中创建XML Pull解析器。


以下是源码:

写了一个解析接口然后分别用三个类来实现。当然还可以写成工具类的方式。

MainActivity:


接口:


DOM实现类:


SAX实现类:


Pull实现类:





Person测试类:

要读取的Person XML文件:




附源码下载地址:http://download.csdn.net/detail/badboy1110/3629850


不要资源分,希望大家能有收获。 ^_*


如果觉得有帮助,顺手给我个评论~~~~多谢~


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics