xmldom:XML中DOM的结构分析



在DOM中我们将代表XML文件设计对象称为节点(nodes)当InternetExplorer5处理被链接XML文件并储存于DOM中时它会为XML文件个基本组件建立个节点这些基本组件包括了元素、属性和处理指令DOM会使用区别形态节点来代表区别形态XML组件例如元素是储存在Element节点中而属性则是储存在Attribute节点中表格9-1列出了这些节点类型最重要部分
节点形态节点对象所代表XML文件组件节点名称(nodeName对象属性)节点值(nodeValue对象属性)
文件(Document)文件阶层中根节点(代表整个XML文件)#documentNull
元素(Element)元素元素形态名称(例如BOOK)null(包含在元素中(Element)任何数据是位在个或多个子文字节点中)
文字(Text)属于由这个节点父节点所代表元素属性及实体文字#text父XML组件文字
属性(Attribute)属性(以及其它名值对像处理指令中名字和值)属性名称(如Binding)属性值(例如hardcover)
处理指令(ProcessingInstruction)处理指令(XML宣告或自订处理指令)处理指令目标(例如xml)除了目标的外整个处理指令内容(例如Version\"1.0\")
批注(Comment)批注#comment在批注符号中文字
CDATA区段(CDATASection)CDATA区段#cdata-sectionCDATA区段中内容
文件类型(Document

Type)文件形态宣告出现在DOCTYPE宣告中根元素名字(例如INVENTORY)Null
实体(Entity)DTD中实体宣告实体名称(例如image)null(实体值是位在子文字节点中)
标签DTD中标签宣告标签名称(例如BMP)>null(卷标系统literal(Notation)是位在名为SYSTEM子Attributenode中)

表格9-1用来表示区别XML文件组件基本节点形态这些类型个节点都是设计对象提供了存取相关组件属性和思路方法
你可以从节点中nodeName属性获得每个节点名称(详列于表格9-1中第 3栏)这个名称是以#起始代表那些未在文件中命名XML组件节点标准名称(例如在XML文件中批注并未命名因此DOM将使用标准名称#comment)其它节点名称则是由指定到XML文件中相对应组件名称衍生而来(例如代表形态BOOK元素元素节点也可以命名为BOOK
你可以从节点nodeValue属性取得每个节点节点值(列于表格9-1中最后栏)如果XML组件拥有个相关值(例如属性)该值将会被储存于节点节点值中如果XML组件并没有节点值(例如元素)则DOM将会把节点值设成null在本章稍后你将学到更多有关列于表格9.1中各种节点类型相关知识 [Page]
DOM会将XML文件节点建构成树状阶层结构反映出XML文件本身阶层结构DOM将会建立个单文件节点来表示整个XML文件并将其视为阶层结构根节点注意XML元素逻辑阶层结构包含了整个XML文件结构中根节点只是DOM节点阶层结构个分枝
参考列表9-1中XML文件范例(你可以在随书光盘Dom.xml档案中找到列表9-1)这份文件包含了XML宣告、批注以及包含子元素和属性节点元素
下图展示了节点阶层组织该节点是DOM所建立用来呈现这份范例文件对于范例文件中每个组件该图指出了用来表现每个组件节点形态(例如文件、批注和元素)以及节点名称(下图括号中所示-例如#document、#comment和INVENTORY)


InventoryDom.XML

lt;?xmlversion=\"1.0\"?>

lt;!--FileName:InventoryDom.xml-->

lt;INVENTORY>

lt;BOOKBinding=\"massmarketpaperback\">

lt;TITLE>TheAdventuresofHuckleberryFinn

lt;AUTHORBorn=\"1835\">MarkTwain

lt;PAGES>298

lt;PRICE>$5.49

lt;/BOOK>

lt;BOOKBinding=\"tradepaperback\">

lt;TITLE>TheMarbleFaun

lt;AUTHORBorn=\"1804\">NathanielHawthorne

lt;PAGES>473

lt;PRICE>$10.95

lt;/BOOK>

lt;BOOKBinding=\"hardcover\">

lt;TITLE>Moby-Dick

lt;AUTHORBorn=\"1819\">HermanMelville

lt;PAGES>724

lt;PRICE>$9.95

lt;/BOOK>

lt;/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; [Page]
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组件例如文件节点(Documentnode)提供了parseError属性内含任何处理文件时所产生相关信息只有文件节点拥有这种属性在本章稍后你将看到份描述某些节点类型有用节点特殊属性和思路方法表格
提示

如果某个属性不适用于特定节点则该属性将包含null值例如如果某节点代表个不包含任何属性XML文件(如Document或Commentnode)时其attributes属性将被设为null如果某节点代表某个不含有任何数据类型(只有某些属性拥有数据类型)XML组件时该节点dataType属性将被设为null如果节点并没有任何非属性子节点其firstChild属性将为null而如果节点为不含值类型(如Document或Elementnode)其nodeValue属性将被设为null
注意表格9-2中每个节点拥有组属性让你可以浏览节点阶层架构来从目前节点存取其它节点资料例如在列表9-1中文件如变量Document包含了文件根Document节点后续代码将会显示最接近文件起始部分批注内容而DOM会将批注内容储存在Document节点第 2个子节点中 [Page]
alert(Document.childNodes(1).nodeValue);
这行代码将会显示个消息框内含文字「FileName:In-ventoryDom.xml」透过XMLdataisland取得DSOXMLDocument成员对象来存取根Document节点此Document节点被视为存取XML文件网关(gateway)

你使用该节点来存取其它节点

Tags:  dom解析xml事例 xmldomdocument dom解析xml xmldom

延伸阅读

最新评论

发表评论