`

解析xml的三种方式DOM/SAX/PULL

阅读更多

 

我们现在的大多开发项目中都难免和服务器端打交道,交互的过程无非是数据输入和输出,当我们将接口要求的数据按照格式传输到服务器端后,就会得到服务器端返回的数据,在行业内数据大多会使用被普遍接受和采用的 XML 格式(也有不少使用 JSON )来组织数据进行返回,当我们获得 XML 时就可以解析获得自己需要的数据,或许是操作结果,或许是需要展示的数据列表,在 Android 中主要有三种的 XML 解析方式分别是 SAX DOM PULL

 

  DOM 的基本原理:

DOM 解析 XML 文件时,会将 XML 文件的所有内容读取到内存中,然后允许您使用 DOM API 遍历 XML 树、检索所需的数据。使用 DOM 操作 XML 的代码看起来比较直观,并且,在某些方面比基于 SAX 的实现更加简单。但是,因为 DOM 需要将 XML 文件的所有内容读取到内存中,所以内存的消耗比较大,特别对于运行 Android 的移动设备来说,因为设备的资源比较宝贵,所以建议还是采用 SAX 来解析 XML 文件,当然,如果 XML 文件的内容比较小采用 DOM 是可行的。

参考于http://dev.10086.cn/cmdn/wiki/index.php?doc-view-3343.html

SharedPreferences读取的也是 XML文件,只是 SharedPreferences将操作 XML文件的具体细节隐藏了。本节及实例 38中将揭开挡在我们面前的面纱,对操作 XML文件的内幕一探究竟。
    虽然可以使用很多第三方的 jar包来操作 XML,但 Android SDK本身已经提供了操作 XML的类库,这就是 SAX。使用 SAX处理 XML需要一个 Handler对象,一般会使用一个 org.xml.sax.helpers.DefaultHandler的子类作为 Handler对象。
SAX技术在处理 XML文件时并不一次性把 XML文件装入内存,而是一边读一边解析。因此,这就需要处理如下 5个分析点,也可称为分析事件。


  • 开始分析 XML文件。该分析点表示 SAX引擎刚开始处理 XML文件,还没有读取 XML文件中的内容。该分析点对应于 DefaultHandler类中的 startDocument事件方法。可以在该方法中做一些初始化的工作。

  • 开始处理每一个 XML元素,也就是遇到 <product> <item>这样的起始标记。 SAX引擎每次扫描到新的 XML元素的起始标记时会触发这个分析事件,对应的事件方法是 startElement。在该方法中可以获得当前元素的名称,元素属性的相关信息。

  • 处理完一个 XML元素,也就是遇到 </product> </item>这样的结束标记。该分析点对应的事件方法是 endElement。在该事件中可以获得当前处理完的元素的全部信息。

  • 处理完 XML文件。如果 SAX引擎将整个 XML文件的内容都扫描完了,就到了这个分析点,该分析点对应的事件方法是 endDocument。该事件方法可能不是必需的,如果最后有一些收尾工作,如释放一些资源,可以在该方法中完成。

  • 读取字符分析点。这是最重要的分析点。如果没有这个分析点,前 4个步的处理相当于白跑一遍,虽然读取了 XML文件中的所有内容,但并未保存这些内容。而这个分析点所对应的 characters事件方法的主要作用就是保存 SAX引擎读取的 XML文件中的内容。更准确地说是保存 XML元素的文本,也就是 <product>abc</product>中的 abc

  • 了解了 SAX引擎读取 XML文件的原理,使用起来就容易多了,读者在实例 38中将会看到如何将 XML文件转换成一个 Java对象。

 

更多内容请参考http://dev.10086.cn/cmdn/bbs/thread-34932-1-1.html

 

 

那么废话少说,代码附上!

  • 大小: 26.2 KB
  • 大小: 24 KB
1
4
分享到:
评论
2 楼 giianhui 2011-07-05  
下载附件就可以看到了
1 楼 doylecnn 2011-07-05  
PULL 呢?

相关推荐

Global site tag (gtag.js) - Google Analytics