• 热门标签

当前位置: 主页 > 航空资料 > 计算机 >

时间:2010-08-09 13:05来源:蓝天飞行翻译 作者:admin
曝光台 注意防骗 网曝天猫店富美金盛家居专营店坑蒙拐骗欺诈消费者

我们也说明D O M规范仅仅描述了访问机制,而不涉及特定的实现。但是,我们如何利用这些信
息,将它们应用于特定的问题?为此,我们需要使用DOM API。
5.2.1 DOM API
编写通过D O M访问X M L文件的软件时,必须使用特定的D O M实现。实现是某种形式的类
库,它设计为运行在特定的硬件和软件平台上,并访问特定的数据存储(例如:文本文件,关
系数据库,等等)。
1. 什么是A P I
应用程序编程接口( Application Programming Interface, API)。不要受接口一词的误导—
A P I实际上是一组类库,一个组件利用它指示另一个组件执行更底层的服务。同样地, A P I必须
是一个接口的实现,它包含适当的代码用于连接其他组件,并指示它们执行相应的功能。
D O M并不是A P I
如前所述,W3C DOM仅仅提供了D O M类库的接口定义,而没有提供特定的实现。为程序
员提供D O M实现的任务要由第三方完成。当你打算使用D O M操作应用程序中的X M L结构时,
对于应用程序的每个目标平台,都要获取相应平台的D O M实现。在大多数情况下,这些类库要
与你的应用程序绑定,并与应用程序的二进制代码一起分发。
需要注意的是,与H T M L解析器的实现类似, D O M的实现应该声明它所遵守的W 3 C规范。
考虑到在本书出版之际W 3 C规范的状态(DOM Level 1是一个建议,DOM Level 2是一个候选建
议),D O M的所有实现至少要提供Level 1文档中描述的功能。许多D O M实现还提供附加的功能
—Level 2文档中描述的行为,或者特定实现的开发者认为有用的附加行为。例如, M i c r o s o f t
D O M支持Level 1规范的所有内容,除此之外还提供其他导航方法,以及用于支持样式表的方法
和属性,等等。与其他开发工作类似,在决定是否利用特定的D O M实现提供的附加功能之前,
必须考虑你的目标平台。
2. XML数据结构编程
使用D O M访问X M L节点树中的信息时,最好围绕着D O M提供的访问机制设计系统。举例
来说,如果你使用面向对象的数据库,可以根据X M L元素定制相应的对象。如果你知道要使用
哪些元素,可以创建封装其他对象的对象,并以尽可能最有效的方式在内存中复制X M L树—
我们在前面介绍了一个有关“雪花型”数据库的例子。
另外,你应该记住X M L文件常常相当大,因此内存管理变得至关重要。良好的D O M实现能
够在需要时提供即时的元素提取(读取元素信息时,这是以更长的搜索和获取时间为代价的),
同时它应该提供良好的内存管理,避免超过内存容量或者交换失败。程序应该监视系统资源,
并设定阈值,当超过阈值时,不允许D O M访问更多的文件,直至系统资源被释放。如果仅仅由
120使用XML 高级编程
下载
于文件过大而导致采用D O M方式的实现无法处理,则只能转向S A X等事件驱动的解析器(第6
章将讨论S A X)。
5.2.2 客户端和服务器端
虽然有许多D O M和X M L应用程序,但是它们基本上可以分为两种类型:用于服务器端的
(或者在一个可控的环境中,例如:客户机-服务器系统)和用于客户端的。针对每种类型,我们
将讨论D O M的一些潜在应用。
1. 服务器端的D O M
由于I n t e r n e t开发人员能够对服务器上的软件进行更多的控制,因此D O M的应用通常首先是
在服务器端的。D O M能够极大地简化不同商业系统之间的数据交换,并且为数据的存档和获取
提供了理想的机制。
(1) 文档交换
X M L在企业中的首要应用将是简化过程之间以及业务之间的通信。与普通的文件或数据库
等传输格式相比,X M L有许多优势:
• X M L文件是独立于平台的—与A c c e s s数据库或SQL Server不同,X M L文件实际上能够被
任何系统读取和理解,系统只要读取文档,并利用系统上的D O M实现将文档解析为节点
树。
• X M L文件是自描述的—与普通的文件(它需要程序员协商文件的格式描述,并进行适当
的转换)不同,设计良好的X M L文件只需要很少的外部解释文档—每个描述作者的元素
被明确地标记为< a u t h o r >,依此类推。
• X M L文件显示层次化信息—普通的文件可能包含重复的子元素组(例如:某个作者写的
所有书),而X M L文件设计为以一种自然的方式表达层次信息—通过节点树。举例来说,
如果X M L文件包含7位作者和2 2本书,只需要遍历由D O M创建的节点树,就立即能够了解
哪本书是与哪位作者相关的。
目前,软件界有一种强大的趋势—将用于业务之间信息传递的X M L格式标准化。B i z Ta l k
(w w w. b i z t a l k . o rg)和XML Mortgage Partners(w w w. x m l m o r t g a g e . o rg)等组织正在创建D T D、
模式和数据字典,它们将有助于提高不同业务之间信息交流的效率。
(2) 存档
如果要将信息存档, X M L是一种理想的存储方式—特别是当这些信息是面向对象的或者
来自于层次型数据库。关系型数据库通常也(但不总是)比较容易表示为X M L节点树。由于
X M L文件是基于文本的,而且可能包含许多重复的文本(标记),因此常常有较高的压缩率。一
个典型的相当大的X M L文件能够压缩到原来大小的十分之一至二十分之一。通过遍历数据库的
层次树或关系树,并使用D O M构造适当的节点树,很容易将整个信息集存档到一个X M L文件
中。
以一个发票系统为例,假设它要删除超过一年的发票。系统可以在每天晚上运行一个自动
过程,它扫描数据库,寻找要存档的发票。如果使用D O M,该过程可以在与发票相关的层次型
信息树或关系型信息树中搜索。客户信息、运输信息和行式项目信息等等都将封装在一个文件
第5章文档对象模型使用121 下载
中,这个文件用于表示发票。然后,系统可以压缩该文件,并将它保存到磁带或其他存档介质
上。如果你对于特定的发票有疑问,可以获取并解压相应的X M L文件。而后通过读取文件寻找
 
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:XML高级编程上(51)