XML教程之DOM概述

ZDNet软件频道 时间:2002-05-23 作者:BUILDER.COM |  我要评论()
本文关键词:
本文将讨论所谓的文档对象模型DOM(Document Object Model)。由于很多编程语言都实现了DOM,所以我在本文中会尽力采取一种同具体语言无关的态度,其宗旨集中于介绍DOM的规范。
节点概述

节点暴露了一些导航元素供你在文档树上移动。parentNode方法返回当前节点的父节点,而nextSibling和previousSibling方法则返回位于当前节点右边或者左边的兄弟节点。检查hasChildNodes属性还可以让你知道给定的节点是否存在子节点。

假设某一节点存在子节点,这些子节点就可以用ChildNodes属性检索。ChildNodesNodeList结构返回当前节点所有的直属(低1级)子节点。NodeLists 是代表一组节点的有序列表(按索引号获取),而它们的同类NamedNodeMaps则把这些返回的节点表示为字典(按名称获取)。这两种对象都是“活”的对象,意思是说对列表的任何修改都会立即受到对象树的反应。

节点对象还暴露了一组增加并且删除子节点的方法。 insertBefore方法在子节点列表内指定节点之前(在左边)直接插入一个新节点,而appendNode方法则在当前节点的子节点列表的末尾(最右边)附加新节点。replaceNode 方法直接用其他节点代替指定子节点,而removeNode则从子节点组中删除给定的节点。

专用节点接口

我已经说过了,节点接口提供了导航文档以及修改文档树的便捷方法,但为了能真正完成大部分有意义的工作,你首先要钻研那些抽象的DOM接口。在本文章的余下部分,我就引领读者考察部门此类接口。

文档为根

Document接口对Node接口进行了扩展以代表完整的XML文档,同时提供了文档树的根元素(<XML>元素)。你在装载一个XML文档时大多数实现都会传递给你一个文Document对象。Document是一种影响文档整体而并不真正适用于其他方面的产物。其大多数方法主要作为创建其他DOM对象的工厂方法。这些形如“createX”的方法可以为那些不支持传统构造器语言实现创建Element、DocumentFragment、TextNode、CDATASection、ProcessingInstruction、属性(Attr)、EntityReference以及各类名称空间节点。

Document还包括两种在文档内移动到特定位置的有用方法:

  • getElementsByTagName 返回给定标签名字内所有元素的NodeList。其列表内的排列顺序按照在文档中遇到这些元素的顺序确定。这是一种在文档中检索特定元素所有实例的简便方法,而且因为元素作为Node被返回,所以围绕文档的导航成为可能。
  • getElementByID返回其类型ID属性匹配指定ID的元素。该方法用来快速定位文档中的单个元素。

Document接口还有一个很有意思的地方,其Node接口暴露了一个ownerDocument性质,通过它可以返回该节点的父Document对象。

树的元素

我走的急了点,在谈到Element接口之前竟然先讨论了两种获取元素的方法。好的,回过头来,在这里Element如你所期望的那样就是代表XML元素。

element接口主要处理属性(也可以由根node接口所用),其13个方法提供了访问多种属性的形式。在这其中,你可能最常用到getAttribute/setAttributegetAttributeNode/setAttributeNode方法。前者允许你在提供了属性名称的前提下直接读写属性值。后者则允许你操作代表属性的实际Attr对象。

Element接口的过人之处是任何检索数据的方法都关联某一元素。这是因为给定元素的数据被当作该元素的子节点,而子节点则可以通过根Node接口的ChildNodes属性获取。如果子节点只包含了字符数据,那么元素的数据节点就只实现Text接口。然而,在复杂数据的情况下,实现适当的Element、Attr和/或Text接口的一组子节点,按照数据的类型即可代表元素的子节点。

图B所示为元素及其数据节点之间的复杂关系。

图B

关联数据节点的两个元素



文档分段

在处理XML时,有个常见的任务就是创建新的元素并把它们附加到现有的文档。DocumentFragment接口以修改插入方法(insertBefore、appendNodereplaceNode)行为的方式略微扩展了node以便在DocumentFragment插入文档的情况下,只有其子节点被插入,而DocumentFragment节点自身则不被插入。这样就促使DocumentFragment成为XML树内新节点的一种理想的临时附着点。

以上就是我们对DOM基础知识的阐述。下一部分我们接着介绍这一XML教程三部曲的SAX  API 部分。

责任编辑:炒饭

百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134