- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
文档对象模型
下载
第5章 文档对象模型
现在,应该开始研究 X M L 文档的结构,以及如何利用它描述层次化信息。下面,我们将说
明如何通过程序访问X M L 文档。其中一种方法是通过文档对象模型( Document Object Model ,
D O M )。在本章中,我们将介绍文档对象模型,并借助几个程序实例解释它的功能。
5.1 什么是文档对象模型
文档对象模型一词在We b浏览器领域并不陌生。窗口、文档和历史等对象都被认为是浏览器
对象模型的一部分。然而,任何做过 We b开发的人都知道各种浏览器实现这些对象的方式不尽相
同。对于如何通过We b访问和操作文档结构这个问题,为了创建更加标准化的方法, W 3 C提出
了目前的W3C DOM规范。
W3C DOM 是一种独立于语言和平台的定义,即:它定义了构成 D O M 的不同对象的定义,
却没有提供特定的实现,实际上,它能够用任何编程语言实现。例如,为了通过 D O M访问传统
的数据存储,可以将D O M 实现为传统数据访问功能之外的一层包装。利用 D O M 中的对象,开发
人员可以对文档进行读取、搜索、修改、添加和删除等操作。 D O M 为文档导航以及操作 H T M L
和X M L文档的内容和结构提供了标准函数。
5.1.1 XML文档结构
刚刚接触X M L 的开发人员常常会认为X M L 的主要目的是为文件中的信息片段命名,使之易
于被其他人理解。结果,这些新手开发的文档简直如同“标记汤”—无序的数据元素列表与
有意义的标记名称组合在一起,但是它与普通的文件一样都将信息置于同一层:
程序清单 5 - 1
许多开发人员都忽略了 X M L 能够显示元素之间的关系这一特性—特别是表示两个元素的父
112使用XML 高级编程
下载
子关系。如果将上述文件改写为以下形式,将产生更好的效果:
程序清单 5 - 2
在这种形式的文档中,发票元素显然包括四个行式项目子元素。它还简化了文档的搜索—
如果我们要寻找钚的所有订单,可以查询P R O D U C T属性值为“P l u t o n i u m ”的L I N E I T E M元素—
而不必依次查看每个P R O D U C T元素。
以上文档结构可以用图5 - 1 中的节点树表示,它显示了所有元素以及它们之间的相互关系。
如果要给文本文件中的发票增加行式项目,必须读取文件直至发票的最后一个行式项目的
末尾,插入新的行式项目文本,然后继续处理文档的后续部分。正如你所料,这种技术很快会
变得非常棘手,特别是当节点树变得越来越深时。然而,如果你能够根据树结构以节点形式对
文档进行操作,添加行式项目就轻而易举了 —只需创建新的 L I N E I T E M 节点,并将它作为
I N V O I C E节点的子节点。
图 5-1
这就是D O M 的工作原理。
当你使用D O M对X M L文本文件进行操作时,它首先要解析文件,将文件分解为独立的元素、
属性和注释等。然后,它以节点树的形式(在内存中)创建 X M L 文件的表示。此后,开发人员
可以通过节点树访问文档的内容,并根据需要修改文档。
事实上,D O M执行了更进一步的操作,它将文档中的每个项目看作节点—元素、属性、
注释、处理指令,甚至构成属性的文本。因此,对于我们上面的例子, D O M 实际上会将文档表
第5章 文档对象模型使用113
下载
示为图5 - 2所示的形式。
D O M提供了强大的接口集合,以简化对 D O M节点树的操作。
属性:C U S TO M E R 文本:Homer J.
文档评论(0)