android解析分析

面试:你懂什么是分布式系统吗?Redis分布式锁都不会?>>>   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文件后触发相应的事件调用方法返回的是数字。  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值