前面介绍了四种创建、解析XML的方式:
0、 Android 创建与解析XML(一)—— 概述
1、 Android 创建与 解析XML(二)—— Dom方式
2、 Android 创建与解析XML(三)—— Sax方式
3、 Android 创建与解析XML(四 )—— Pull方式
4、 Android 创建与解析XML(五)—— Dom4j方式
其中,从处理方式看,有的采用了Java处理 XML的标准方式,有的是经过第三方改进后的XML处理方式;从事件角度看,有的是基于Dom树节点,有的基于事件处理
为 什么创建、解析XML会产生这么多方法呢?四种处理方式的特点各是什么?它们分别更适合什么样的使用场景呢?
一、 XML 通用标准
XML 世界非常庞大,而且还在不断成长,存在大量不同的标准和技术,它们以复杂的方式互相影响。
XML 正在变得越来越强大,并且得到了迅速的发展,它已经证明自己是一种非常有价值的技术,但可能也是一种令人害 怕的技术,如果考虑到挂在“XML”一词下面不断变化的各个部分,新手很难确定哪些是 XML 最重要的方面,用户也难以跟踪这 个领域出现的新生事物和变化。
标准,有各种各样的形式,而且在同一个领域中常常有多种标准互相竞争,此处把标准 定义为:被不同的供应商大量采用的或者有影响的、独立于供应商的组织推荐的规范。
1) XML 1.0 ,W3C 推荐的标准 ,衍生出 XML 技术大树的主干。它在 Unicode [Unicode Consortium 技术报告和 ISO 标准]的基础上定义了文本格式的严格规 则,以及 DTD (文档类型定义,Document Type Definition)验证语言。该规范的当前版本(第 2 版)包含了规范的历 次修订。它被 翻译成多种语言,尽管英语版本是唯一的规范版本,就是说只有这个版本被认为具有标准的效力。
2) XML 1.1 ,正在开发中,是改变了结构良好的 XML 文档的定义的第一个修订版。主要的变化是修订了 XML 规范中对字 符的处理,使其更自然地适应 Unicode 规范的变化,并通过引用 万维网字符模型(Character Model for the World Wide Web 1.0)[开发中],提供了不同 Unicode 版本字符的规范化。XML 1.1 还增加了行结束字符列表,新增加的 NEL 用于在 IBM 大型 机系统中表示行结束(EOL)。这种变化存在争议,有人认为对大型机用户带来的有限好处不值得做这种基础性的改变。还有一 些其他的争论,因为一些评论者发现所有的修改都太稳妥了,在 XML 版本变换中不会造成各种可能的互操作性问题。
XML 是基于 Standard Generalized Markup Language(标准通用标记语言,SGML)的,后者由 ISO 8879:1986 [ISO 标准] 定义。它在很大程度上简化了 SGML,包括一些调整使其更适合于 Web 环境。
二、 XML处理方式
大多数与XML 相 关的Java API 在Android 上得到了完全支持,在Android 上可以创建功能强大的移动应用程序,而在Android 上解析XML的技术 有三种DOM、SAX、PULL。
1) DOM 解析技术
DOM(Document Object Model,文档对象模型),Android 完全支持DOM 解析,利用DOM 中的对象,可以对XML 文档进行读 取、搜索、修改、添加和删除等操作。
使用DOM 对XML 文件进行操作时,首先要解析文件,将文件分为独立的元素、属 性和注释等,然后以节点树的形式在内存中对XML 文件进行表示,就可以通过节点树访问文档的内容,并根据需要修改文档—— 这就是DOM的工作原理。DOM 实现时首先为XML 文档的解析定义一组接口,解析器读入整个文档,然后构造一个驻留内存的树结 构,这样代码就可以使用DOM接口来操作整个树结构。
DOM 解析流程: