既然要介绍这三种解析方法那么当然要说一下为什么用他们,用他们有什么优点和缺点。
首先说一下Dom解析:
优点:易用性强,使用DOM时,将把所有的XML文档信息都存于内存中,并且遍历简单,支持XPath,增强了易用性。
缺点:效率低,解析速度慢,内存占用量过高,对于大文件来说几乎不可能使用。另外效率低还表现在大量的消耗时间,因为使用DOM进行解析时,将为文档的每个element、attribute、processing-instrUCtion和comment都创建一个对象,这样在DOM机制中所运用的大量对象的创建和销毁无疑会影响其效率。
接着说Sax解析:
优点:不用事先调入整个文档,占用资源少。尤其在嵌入式环境,如Android,极力推荐采用SAX进行解析。
缺点:不像DOM一样将文档树长期留驻在内存,数据不是长久的。事件过后,若没保存数据,那么数据就会丢失。
然后Pull解析:
优点:不必自己写事件逻辑,并且也不需要把文档读到内存。个人感觉优于以上两种解析方式。
缺点:对文档修改比较困难。
下面用代码来演示一下用法:
首先添加一下XML格式内容:
<apps>
<app>
<id>1</id>
<name>Google Map</name>
<version>1.0</version>
</app>
<app>
<id>2</id>
<name>Chrome</name>
<version>2.1</version>
</app>
<app>
<id>3</id>
<name>Google</name>
<version>2.3</version>
</app>
</apps>
Pull解析:
运行结果如下:
主要代码如下:
private void parseXMLWithPull(String responseData) {
try{
XmlPullParserFactory factory = XmlPullParserFactory