Android中几种xml解析的比较
2016-04-18 21:53
411 查看
Andorid中xml解析方法有以下三种:DOM解析、SAX解析、还有Pull解析。今天我们就来比较一下几种解析方法的优缺点
DOM 解析
优点:
1.XML 树在内存中完整存储,因此可以直接修改其数据和结构.
2.可以通过该解析器随时访问XML 树中的任何一个节点.
3.DOM 解析器的API 在使用上也相对比较简单.
缺点:如果XML 文档体积比较大时,将文档读入内存是非常消耗系统资源的.
使用场景:DOM 是用与平台和语言无关的方式表示XML 文档的官方W3C 标准.DOM 是以层次结构组织的节点的集合.这个层次结构允许开发人员在树中寻找特定信息.分析该结构通常需要加载整个文档和构造层次结构,然后才能进行任何工作.DOM 是基于对象层次结构的.
SAX 解析
优点:
SAX 对内存的要求比较低,因为它让开发人员自己来决定所要处理的标签.特别是当开发人员只需要处理文档中所包含的部分数据时,SAX 这种扩展能力得到了更好的体现.
缺点:
用SAX 方式进行XML 解析时,需要顺序执行,所以很难访问到同一文档中的不同数据.此外,在基于该方式的解析编码过程也相对复杂.
使用场景:
对于含有数据量十分巨大,而又不用对文档的所有数据进行遍历或者分析的时候,使用该方法十分有效.该方法不用将整个文档读入内存,而只需读取到程序所需的文档标签处即可.
pull 解析
android SDK 提供了xmlpull api,xmlpull 和sax 类似,是基于流(stream)操作文件,然后根据节点事件回调开发者编写的处理程序.因为是基于流的处理,因此xmlpull 和sax 都比较节约内存资源,不会象dom 那样要把所有节点以对橡树的形式展现在内存中.xmlpull 比sax 更简明,而且不需要扫描完整个流.
DOM 解析
优点:
1.XML 树在内存中完整存储,因此可以直接修改其数据和结构.
2.可以通过该解析器随时访问XML 树中的任何一个节点.
3.DOM 解析器的API 在使用上也相对比较简单.
缺点:如果XML 文档体积比较大时,将文档读入内存是非常消耗系统资源的.
使用场景:DOM 是用与平台和语言无关的方式表示XML 文档的官方W3C 标准.DOM 是以层次结构组织的节点的集合.这个层次结构允许开发人员在树中寻找特定信息.分析该结构通常需要加载整个文档和构造层次结构,然后才能进行任何工作.DOM 是基于对象层次结构的.
SAX 解析
优点:
SAX 对内存的要求比较低,因为它让开发人员自己来决定所要处理的标签.特别是当开发人员只需要处理文档中所包含的部分数据时,SAX 这种扩展能力得到了更好的体现.
缺点:
用SAX 方式进行XML 解析时,需要顺序执行,所以很难访问到同一文档中的不同数据.此外,在基于该方式的解析编码过程也相对复杂.
使用场景:
对于含有数据量十分巨大,而又不用对文档的所有数据进行遍历或者分析的时候,使用该方法十分有效.该方法不用将整个文档读入内存,而只需读取到程序所需的文档标签处即可.
pull 解析
android SDK 提供了xmlpull api,xmlpull 和sax 类似,是基于流(stream)操作文件,然后根据节点事件回调开发者编写的处理程序.因为是基于流的处理,因此xmlpull 和sax 都比较节约内存资源,不会象dom 那样要把所有节点以对橡树的形式展现在内存中.xmlpull 比sax 更简明,而且不需要扫描完整个流.
相关文章推荐
- 解决SlidingPaneLayout的滑动冲突
- android textView实现跑马灯效果
- Android性能优化-StrictMode(严苛模式)
- android仿超级课程表demo
- Android基础控件 - RadioButton与CheckBox
- Android 学习记录-Activity生命周期
- 各种控件和布局--android学习
- Android .9.png图片的制作与使用
- Android学习第八篇——DrawerLayout
- 安装Android Studio时出现‘tools.jar’ seems to be not in Android Studio classpath.
- Android支持Emoji表情 MySQL PHP
- android TextView 笔记
- Handler使用方法
- android适配规则(一)
- 异常:Binary XML file line #7: Error inflating class android.support.v7.widget.RecyclerView
- Android中的style和theme
- Android 6.0 M的新特性
- Android java.io.FileNotFoundException: open failed: EACCES (Permission denied) 问题未解决!!
- android设计模式的使用之观察者模式
- Android实现电子邮箱客户端