博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android解析分析
阅读量:6857 次
发布时间:2019-06-26

本文共 977 字,大约阅读时间需要 3 分钟。

hot3.png

我们使用java解析xml,主要还是有两种方式,一种方式是SAX解析,另一种是DOM解析。当然还有一系列的其他第三方解析API,如JDOM/DOM4J.他们各自有各自的优缺点。这里我们主要分析下最基础的两种解析方式,sax解析和dom解析。

两者依赖的解析机制是完全不同的。 sax解析,依赖于 事件触发机制,你可以认为我们在读取xml的时候,每遇到一个xml内容都会触发相应的事件,我们一行行的往下读,事件也自动的一个个的往下触发,一直到最终结束。代码中,我们则需要实现一个defaultHandler,来定义当xml读到什么内容时,进行什么样子的操作。sax解析,只能从文档头一直读到尾,中间不能停止也不能对文件进行修改。直到解析完了整个文档才会返回。

SAX解析。其特点为:

优点:不用实现调入整个文档,占用资源少。尤其在嵌入式环境中,如android,极力推荐使用SAX解析。
缺点:不像DOM解析一样将文档长期驻留在内存中,数据不是持久的。如果事件过后没有保存数据,数据就会丢失。
使用场合:机器有性能限制。

dom解析,则是通过在内存中形成一个节点树来完成xml解析,它虽然可以快速的定位xml中的某个位置,并且可以对其进行修改操作,但是它对内存的要求比较大。特别是当xml文件比较大的时候,这个缺点就更严重了。对于手机来说,这很致命。
SAX方式的特点是需要解析完整个文档才会返回,如果在一个XML文档中我们只需要前面一部分数据,但是使用SAX方式还是会对整个文档进行解析,尽管XML文档中后面的大部分数据我们其实都不需要解析,因此这样实际上就浪费了处理资源。
为了解决点这种缺陷,Android利用另一种更加高效方便的xml解析方式对xml文件进行解析,这就是Pull解析。
Pull解析器和SAX解析器虽有区别但也有相似性。他们的区别为:SAX解析器的工作方式是自动将事件推入注册的事件处理器进行处理,因此你不能控制事件的处理主动结束;而Pull解析器的工作方式允许你在应用程序代码中主动从解析器中获取事件,正因为是主动获取事件,因此可以在满足了需要的条件后不再获取事件,结束解析;pull读取xml文件后触发相应的事件调用方法返回的是数字。  

转载于:https://my.oschina.net/gavinjin/blog/49633

你可能感兴趣的文章
08-BGP FAQ汇总
查看>>
.NET 2.0中的企业库异常处理块
查看>>
Datanode 死锁
查看>>
【Unity3D 游戏开发之一】搭建Unity3D环境&导出自带Demo示例;
查看>>
有关弹窗页面的注意问题
查看>>
Linux裁剪一个MINI系统
查看>>
Hyper-V复制如何确保应用程序一致性
查看>>
Oracle 备份与恢复学习笔记(9_2)
查看>>
XenDesktop7-基于Exsi5.1.0部署
查看>>
在移动硬盘安装WINDOWS系统,告别安装后出现的蓝屏问题
查看>>
Openfire修改Domain域值
查看>>
LeetCode - 53. Maximum Subarray
查看>>
动态改变UITabBarController的菜单文字
查看>>
webstorm添加vue插件支持
查看>>
WebLogic SSRF And XSS (CVE-2014-4241, CVE-2014-4210, CVE-2014-4242)
查看>>
通过脚本和任务计划自动开启exchange邮箱
查看>>
Git学习笔记五--分支管理
查看>>
深度学习入门:几幅手稿讲解CNN
查看>>
android 中文api (63) —— SimpleAdapter.ViewBinder
查看>>
CentOS7 iso ks
查看>>