分享
 
 
 

DOM的结构

王朝other·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

在DOM 中,我们将代表XML 文件的程序设计对象,称为节点(nodes)。当Internet Explorer 5 处理被链接的XML 文件并储存于DOM 中时,它会为XML 文件的每一个基本组件建立一个节点。这些基本组件包括了元素、属性,与处理指令DOM 会使用不同形态的节点来代表不同形态的XML 组件。例如,元素是储存在Element 节点中,而属性则是储存在Attribute 节点中。表格9-1 列出了这些节点类型最重要的部分。

节点形态

节点对象所代表的XML文件组件

节点名称(nodeName 对象属性)

节点的值(nodeValue 对象属性)

文件(Document)

文件阶层中的根节点(代表整个XML 文件)

#document

Null

元素(Element)

元素

元素形态名称(例如,BOOK)

null(包含在元素中的(Element)任何字符数据,是位在一个或多个子文字节点中)

文字(Text)

属于由这个节点的父节点所代表的元素,属性及实体的文字。

#text

父XML 组件的文字

属性(Attribute)

属性 (以及其它的名值对,像处理指令中的名字与值)

属性名称 (如Binding)

属性值(例如hardcover)

处理指令 (Processing Instruction )

处理指令(XML 宣告或自订的处理指令)

处理指令的目标(例如xml)

除了目标之外整个处理指令的内容(例如,Version "1.0")

批注(Comment)

批注

#comment

在批注符号中的文字

CDATA 区段(CDATASection)

CDATA 区段

#cdata-section

CDATA 区段中的内容

文件类型(Document

Type)

文件形态宣告

出现在DOCTYPE 宣告中的根元素的名字(例如INVENTORY)

Null

实体(Entity)

DTD 中的实体宣告

实体名称(例如image)

null (实体值是位在子文字节点中)

标签

DTD 中的标签宣告

标签名称(例如BMP)

>null (卷标的系统literal(Notation)是位在名为SYSTEM 的 子Attribute node中)

表格9-1 用来表示不同XML 文件组件的基本节点形态。这些类型的每一个节点都是一个程序设计对象,提供了存取相关组件的属性与方法。

你可以从节点中的nodeName 属性获得每个节点的名称(详列于表格9-1 中的第三栏)。这个名称是以字符#起始,代表那些未在文件中命名的XML 组件节点的标准名称。(例如,在XML文件中的批注并未命名。因此,DOM 将使用标准名称#comment。)其它节点的名称则是由指定到XML 文件中相对应组件的名称衍生而来。(例如,代表形态BOOK 元素的元素节点也可以命名为BOOK。)

你可以从节点的nodeValue 属性取得每个节点的节点值(列于表格9-1 中最后一栏)。如果XML组件拥有一个相关的值(例如,属性),该值将会被储存于节点的节点值中。如果XML 组件并没有节点值(例如,元素),则DOM 将会把节点值设成null。在本章稍后,你将学到更多有关列于表格9.1 中各种节点类型的相关知识。

DOM 会将XML 文件的节点建构成树状的阶层结构,反映出XML 文件本身的阶层结构。DOM将会建立一个单一文件节点来表示整个XML 文件,并将其视为阶层结构的根节点。注意,XML元素的逻辑阶层结构,包含了整个XML 文件,结构中的根节点,只是DOM 节点的阶层结构的一个分枝。

参考 列表9-1 中的XML 文件范例。(你可以在随书光盘的 Dom.xml 档案中找到列表9-1。)这份文件包含了XML 宣告、批注,以及包含子元素与属性的节点元素。

下图展示了节点的阶层组织,该节点是DOM 所建立用来呈现这份范例文件。对于范例文件中的每个组件,该图指出了用来表现每个组件的节点形态(例如,文件、批注和元素)以及节点的名称(下图括号中所示-例如#document、#comment 与INVENTORY)。

Inventory Dom.xml

<?xml version="1.0"?>

<!--File Name:Inventory Dom.xml -->

<INVENTORY>

<BOOK Binding="mass market paperback">

<TITLE>The Adventures of Huckleberry Finn</TITLE>

<AUTHOR Born="1835">Mark Twain</AUTHOR>

<PAGES>298</PAGES>

<PRICE>$5.49</PRICE>

</BOOK>

<BOOK Binding="trade paperback">

<TITLE>The Marble Faun</TITLE>

<AUTHOR Born="1804">Nathaniel Hawthorne</AUTHOR>

<PAGES>473</PAGES>

<PRICE>$10.95</PRICE>

</BOOK>

<BOOK Binding="hardcover">

<TITLE>Moby-Dick</TITLE>

<AUTHOR Born="1819">Herman Melville</AUTHOR>

<PAGES>724</PAGES>

<PRICE>$9.95</PRICE>

</BOOK>

</INVENTORY>

每个节点,就像可程序化的对象,提供了属性和方法,让你可以存取、显示、管理,和取得对应到XML 组件上的信息。例如,nodeName 和nodeValue 属性(表9-1 所示)提供了元素的名称及内含值。

所有形态的节点共同分享一组公共的属性与方法。这些属性与方法一般是设计来偕同节点一起运作。表格9-2 列出了一些比较有用的共同属性。在本章稍后你将获得有关这些属性的更多信息及范例。

属性

描述

范例

attributes

该节点的所有非属性的子节点的NamedNodeMap 集合

AttributeNode =Element.attributes.getNamedItem ("Binding");

childNodes

该节点的所有非属性的子节点的NodeList 集合

FirstNode =Element.childNodes (0);

dataType

该节点的数据类型(只适用于某些类型Attribute 节点)

AttributeType =Attribute.dataType;

firstChild

该节点的第一个非属性的子节点

FirstChildNode =Element.firstChild;

lastChild

该节点的最后一个非属性的子节点

LastChildNode =Element.lastChild;

nextSibling

与本节点位于同一层级的后继前一节点

NextElement =Element.nextSibling;

nodeName

节点的名称

ElementName =Element.nodeName;

nodeType

表示该节点类型的数值码

NodeTypeCode =Node.nodeType;

nodeTypeString

包含该节点类型的字符串,以小写字母撰写(例如,"element"或"attribute")

NodeTypeString=Node.nodeTypeString;

nodeValue

该节点的值(如果不含值则为null)

AttributeValue =Attribute.nodeValue;

ownerDocument

包含本节点的文件的根Document 节点

Document =Node.ownerDocument;

parentNode

该节点的父节点(并不适用于Attribute 节点)

ParentElement =Element.parentNode;

previousSibling

与本节点位于同一层级的先前节点

PreviousElement =Element.previousSibling;

text

该节点与其后裔节点的全部文字内容

AllCharacterData =Element.text;

xml

该节点与其后裔节点的全部XML 内容

XMLContent =Element.xml;

提示

有关属于不同形态节点对象的所有属性、方法,与事件的详细叙述,请参阅由MSDN 所提供的信息,网址为 http://msdn.microsoft.com/xml/reference/scriptref/xmldom_Objects.asp 。注意在该网页中,前置字符串XMLDOM 作为表格9-1 中每个节点名称的开端-例如,XMLDOMDocument、XMLDOMElement 与XMLDOMText.(这些是每个节点形态的程序接口的名称。) 也注意共同的节点属性和方法被列于XMLDOMNode 的后面。

除了共同的属性和方法外,每种类型的节点都提供了附加的属性和方法,来处理该节点类型所代表的特殊XML 组件。例如,文件节点(Document node)提供了parseError 属性,内含任何处理文件时所产生错误的相关信息。只有文件节点拥有这种属性。在本章稍后,你将看到一份描述某些节点类型的有用节点特殊属性和方法的表格。

提示

如果某个属性不适用于特定节点,则该属性将包含null 值。例如,如果某节点代表一个不包含任何属性的XML 文件(如Document 或Comment node)时,其attributes 属性将被设为null。如果某节点代表某个不含有任何数据类型(只有某些属性拥有数据类型)的XML 组件时,该节点的dataType 属性将被设为null。如果节点并没有任何非属性的子节点,其firstChild 属性将为null。而如果节点为不含值的类型(如Document 或Element node),其nodeValue 属性将被设为null。

注意,表格9-2 中,每个节点拥有一组属性,让你可以浏览节点的阶层架构,来从目前节点存取其它节点的资料。例如,在列表9-1 中的文件,如变量Document 包含了文件的根Document节点,后续的程序代码将会显示最接近文件起始部分批注的内容,而DOM 会将批注内容储存在Document 节点的第二个子节点中。

alert (Document.childNodes(1).nodeValue);

这行程序代码将会显示一个消息框,内含文字「File Name: In-ventory Dom.xml」。在前面的章节中,你已经学会如何透过XML data island 取得DSO 的XMLDocument 成员对象,来存取根Document 节点。此Document 节点被视为存取XML 文件的网关(gateway)。

你使用该节点来存取其它的节点。在接下来的章节中,你将学会存取节点的特殊方法。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有