开发者社区


Web服务 | ASP/ASP.Net | JSP | PHP/Perl | 网站设计
首页 - WEB技术
Web技术
全文搜索:   

XML教程之DOM概述
作者: BUILDER.COM
2002-05-23 10:24:38



节点概述

节点暴露了一些导航元素供你在文档树上移动。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 部分。

责任编辑:炒饭

【上一页】
声明:
Builder.com.cn(原ZDNet China应用开发频道)原创文章版权所有,未经许可严禁转载,且不构成投资建议。
近期相关报道:
实用技术文档
J2me XML
C/C++ C#
Java Oracle
Mysql .Net
VB.NET CSS
SQL Server 数据库
SQL UNIX
Linux Jsp
PHP Perl
Javascript IIS
XHTML ColdFusion
ASP/ASP.NET Apache
AJAX
订阅技术邮件
订阅"技术圈"杂志!请在下面选择您感兴趣的专题,填写e-mail地址,然后按订阅按钮:
应用开发管理
VS.NET 周刊
Database 周刊
WEB Service周刊
JAVA 周刊
IT 认证
Windows服务器周刊
互联网开发
当Windows Server 2008专家得5000元现金大奖
CNET NETWORKS 中国: 爱卡汽车网 | CNET科技资讯网 | e询网 | CWEEK | 蜂鸟网 | GameSpot China | 个人电脑 | PChome | SPN | 网友世界 | ZDNet China | 中关村在线
CNET NETWORKS 美国: BNET | CNET.com | CNET Download.com | CNET News.com | CNET Reviews | CNET Shopper.com | GameSpot | MP3.com | mySimon | Release 1.0 | Search.com | TechRepublic | TV.com | Webshots | ZDNet
Copyright (c) 2006 CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
ZDNet 公司标识是 CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号