??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美日韩国产不卡在线看,欧美日本一区,国产一区二区三区不卡在线
http://www.aygfsteel.com/ThinkingTalking/category/31751.htmlDo what I can do! zh-cn Tue, 27 Apr 2010 04:36:47 GMT Tue, 27 Apr 2010 04:36:47 GMT 60 DOM?wi)的l构 http://www.aygfsteel.com/ThinkingTalking/archive/2010/04/22/319091.htmlThinkingTalking ThinkingTalking Thu, 22 Apr 2010 04:32:00 GMT http://www.aygfsteel.com/ThinkingTalking/archive/2010/04/22/319091.html http://www.aygfsteel.com/ThinkingTalking/comments/319091.html http://www.aygfsteel.com/ThinkingTalking/archive/2010/04/22/319091.html#Feedback 0 http://www.aygfsteel.com/ThinkingTalking/comments/commentRss/319091.html http://www.aygfsteel.com/ThinkingTalking/services/trackbacks/319091.html
一Q引a
XML
是eXtensible Markup Language的羃写,它是一U可扩展性标识语a,
能够让你自己创造标识,标识你所表示的内宏VDOM全称是Document Object
Model(文对象模型)Q定义了一l与q_和语a无关的接口,以便E序和脚本能够动态访问和修改XML文内容、结构及样式。XML创徏了标识,?
DOM的作用就是告诉程序如何操作和昄q些标识?/td>
实际上XML数据组l成Z|(wi)QDOM通过解析XML文Qؓ(f)XML文在逻辑上徏立一个树(wi)模型Q树(wi)的节Ҏ(gu)一个个的对象。这样通过操作q棵?wi)和q些对象可以完成对XML文的操作,为处理文的所有方面提供了一个完的概念性框架?/td>
<line id=”1”> the <bold>First</bold>line</line>
׃DOM“一切都是节点(everything-is-a-nodeQ?#8221;QXML?wi)的每?Document、Element、Text 、Attr和Comment都是 DOM Node?/td>
?
上面例子可知Q?DOM
实质上是一些节点的集合。由于文中可能包含有不同类型的信息Q所以定义了几种不同cd的节点,如:(x)Document、Element、Text?
Attr 、CDATASection、ProcessingInstruction、Notation
、EntityReference、Entity、DocumentType、DocumentFragment{?/td>
在创建XML文gӞ如定义如下的XML文Q?/td>
<?xml version="1.0" encoding="UTF-8"?>
<!--this is an example-->
<first-name>Mike</first-name>
<last-name>Silver</last-name>
<class studentid="15">98211</class>
<first-name>Ben</first-name>
<last-name>Silver</last-name>
<class studentid="16">98211</class>
我们很自然想象到能得到如下图的结构,但是q只是数据的描述Q而不是DOM?wi)的l构?/td>
我们可以通过以下的代码得C面的XML文的根l点和根l点下孩子节点的数目?/td>
import javax.xml.parsers.*;
import xmlwriter.XMLProperties;
public static void main(String args[])
{ File file=new File("links.xml");
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder=factory.newDocumentBuilder();
Document doc=builder.parse(file);
Element theRoot = doc.getDocumentElement();
NodeList theList=theRoot.getChildNodes();
System.out.println("the students root has "+theList.getLength()+" children");
?
是从上面XML文可以看出Qstudents一共只?个孩子节点(包括注释Q,但程序得到的l果实?个孩子结炏Vؓ(f)什么呢Q因为在DOM中节?
和元素不是等L(fng)Q它?个节点包括:(x)两个student元素、注释及它们周围的文本节炏V这些文本节Ҏ(gu)可能是回车换行、空格或者退|假如把这些回?
换行、空格和退格都删除Q那么DOM解释的时候就没有q些文本节点Q孩子节点就真的只有3个了。下图是DOM?wi)的_描述Q?/td>
三.常见的基本节点类型:(x)文档、元素、属性、文本和注释
XML 中共?2U节点类型,其中最常见的节点类型有5U:(x)
元素Q元素是 XML 的基本组成单元。,描述XML的基本信息?/td>
属性:(x)属性节点包含关于元素节点的信息Q通常包含在元素里面,描述元素的属性?/td>
文Q文节Ҏ(gu)整个文中所有其它节点的父节炏V?/td>
通过Jaxp包来解释XML文后,对DOM的节点对象的基本操作?
appendChild(Node newChild)Q在本节点上增加一个新的孩子到孩子列表的后面?/td>
getAttributes()Q得到本节点的属性列表,q回cd为NamedNodeMap?/td>
getChildNodes()Q得到本节点的孩子列表,q回cd为NodeList?/td>
getFirstChild()、getLastChild()Q得到第一个和最后一个孩子节炏V?/td>
getNextSibling()、getPreviousSibling()Q得到本节点的下一个和前一个兄弟节炏V?/td>
getNodeName()、getNodeType()、getNodeValue()Q得到本节点的名U、类型和倹{?/td>
getParentNode()Q得到本节点的父亲节炏V?/td>
insertBefore(Node newChild, Node refChild)Q在本节点的refChild孩子节点前插入一个新的节炏V?/td>
removeChild(Node oldChild)Q删除oldChild孩子节点?/td>
以上列出对DOM?wi)操作的一些常用的基本的方法,q有很多其他的方法,读者可以参考有关的规范?/td>
DOM?wi)结?/strong>和二叉树(wi)很相|元素的孩子节炚w合就是该元素的分支,但是属性节点不是元素的子节点,它只是描q该元素节点的一些性质而已Q属于元素节点结构内部的一部分。以下是用java~写的一D遍历DOM的程序:(x)
public class RecurDOMQNodeList nodelistQ?/td>
if(nodelist.getLength() == 0)
for(i=0;i<nodelist.getLength();i++)
if(node.getNodeType() == Node.ELEMENT_NODE)
RecurDOMQnode.getChildNodes()Q;//递归调用
DOM
是一U在览器内~程的模型,同时也是XML的主要接口,它与语言和^台无养I它是Z?wi)?
APIQ它把所有的数据以父子的节点层次l构装入内存构成一|(wi)Q这些节点的cd可以是元素、文本、属性、注释或其它。它允许开发者读取、创建、删除和~?
?XML 数据。在q再ơ强调,DOM?#8220;一切都是节点(everything-is-a-nodeQ?#8221;?/td>
本文的程序是用java~写的,使用Jaxp包来解释XML文档。本文的适用对象是理?XML 基本概念q开始准备用DOM~写应用E序来操U?XML文 的开发者?br />
]]> DOM的部分对象的层次l构 http://www.aygfsteel.com/ThinkingTalking/archive/2010/04/22/319090.htmlThinkingTalking ThinkingTalking Thu, 22 Apr 2010 04:31:00 GMT http://www.aygfsteel.com/ThinkingTalking/archive/2010/04/22/319090.html http://www.aygfsteel.com/ThinkingTalking/comments/319090.html http://www.aygfsteel.com/ThinkingTalking/archive/2010/04/22/319090.html#Feedback 0 http://www.aygfsteel.com/ThinkingTalking/comments/commentRss/319090.html http://www.aygfsteel.com/ThinkingTalking/services/trackbacks/319090.html
DOM的部分对象的层次l构?
在该层次l构中,最的对象是H口对象QwindowQ?/strong>Q它代表当前的浏览器H口Q之下是文档对象QdocumentQ、事件对象(eventQ、框架对象(frameQ、历史对象(historyQ、地址对象QlocationQ、浏览器对象QnavigatorQ?/strong>?strong>屏幕对象QscreenQ?/strong>Q在文对象之下包括表单QformQ、图像(imageQ?/strong>?strong>链接QlinkQ?/strong>{多U对象;在浏览器对象navigator之下包括MIMEcd对象QmimeTypeQ?/strong>?strong>插g对象QpluginQ?/strong>Q在表单对象之下q包?strong>按钮QbuttonQ、复选框QcheckboxQ、文仉择框(fileUploadQ?/strong>{多U对象?/p>
注意Q这个图只包括了基本?font face="Times New Roman">DOM 对象Q本教程中用的对象都在其范围内。这实际上只?font face="Times New Roman">DOM中很的一部分?font face="Times New Roman">DOM的内容很丰富Q可以写一本厚厚的专著?/font>
既然都是对象Q所以每一个DOM对象都拥有属性(描述Web面或文的变量Q和Ҏ(gu)Q允许操作部分Web面Q。复杂的对象拥有的属性和Ҏ(gu)相当多,如document对象?br />
注意Q这些对象Ş成的是嵌套关p,而不是承关pR所谓嵌套,是高层对象包含低层对象Q低层对象的属性和Ҏ(gu)Q和高层对象是相互独立的Q它们之间不
是父对象和子对象的关pR如同大盒子里可以放各种东西和小盒子、小盒子里还可以攑U东西和更小的盒子一栗所谓承,是子对象拥有父对象的一切属性和
Ҏ(gu)Q同时可能还有自q属性和Ҏ(gu)Q类g父子关系Q当然还不完全一P?br />
但在DOM中,也经常把下层对象说成?#8220;子对?#8221;Q把上层对象说成?#8220;父对?#8221;。这U说法是不严格的Q因为它们之间ƈ不是l承关系。但是,q种说法已经U定俗称Q因此我们后面也q样说?/p>
需要注意的是:(x)DOM 不是JavaScript 的一部分Q而是内置在浏览器中的一个对象模型,所有语a都可以利用和操纵它,?font face="Times New Roman">VBScript、VB.NET、C# ?font face="Times New Roman">Java{?font face="Times New Roman">JavaScript只是最早?font face="Times New Roman">DOM的语a而已Q当然也是h们用得最多的|页~程语言。因此,DOM 可以看成应用E序接口Q?font face="Times New Roman">APIQ?font face="Times New Roman">DOM的基本内容已l标准化了,形成?font face="Times New Roman">DOM 1?font face="Times New Roman">DOM 2规范Qƈ被越来越多的览器所支持?font face="Times New Roman">DOM的高U部分仍在不断发展中?/font>
对象引用Ҏ(gu)
既然是嵌套关p,当引用一个低层对象时Q应该先写父对象名,后面接着是子对象名,对象名之间用圆?#8220;.”隔开。例
如,document是最层对象window的下层对象,如果要表C文对象document的一个图像子对象image9Q因此引用image9对象
可以q样写:(x)
window.document.image9
其实Q这U引用方法在上一章的例子中已l多ơ用。又如,如果要引?font face="Times New Roman">document 对象Q应使用window.document Q如果要引用location 对象Q应使用window.location 。由?font face="Times New Roman">window对象是默认的最上层对象Q因此引用它的子对象Ӟ可以不?font face="Times New Roman">window.Q也是_(d)可以直接?font face="Times New Roman">document引用document 对象Q用location 引用location 对象。这是Z么我们用了那么多“document.write ”而不必用“window.document.write ”的原因?/font>
当引用较低层ơ的对象Ӟ一般有两种方式 ---- 使用对象索引或用对象名Q对象的name属性)Q也可以使用对象的id属性。例如,如果要引用文档中的第一个表单对象,则可以用Q?/p>
document.forms[0]
来引用,因ؓ(f)一个document中的各个form对象?x)Ş成一个对象数l,form[0]当然是这个数l的W一个form对象卌单对象。如果该表单的name属性ؓ(f)form1Q或者id属性ؓ(f)form1Q,则可以用Q?/p>
document.forms["form1"]
或直接用Q?/p>
document.form1
来引用该表单。同P如果在名UCؓ(f)form1的表单中包括一个名UCؓ(f)myText的文本框Q则可以用:(x)
document.form1.myText
来引用该文本框对象?/p>
后面我们会(x)看到Q最好?font face="Times New Roman">id 属性。要解释原因Q需要了解更多的知识Q我们在本章后半部分?x)明白的。但?a target="_blank" >HTML教程中,主要介绍的是传统?font face="Times New Roman">name属性,因此现在我们两个属性都?x)用的?/font>
对应于不同的对象Q通常q有一些特D的引用Ҏ(gu)。例如,如果要引用表单对象中包含的对象,可以使用elements数组Q如果要引用文档对象中包含的某个标记W对象(例如<p>对象Q,可以使用document对象的all属性,{等
]]>
DOM的结?/title> http://www.aygfsteel.com/ThinkingTalking/archive/2010/04/22/319089.htmlThinkingTalking ThinkingTalking Thu, 22 Apr 2010 04:30:00 GMT http://www.aygfsteel.com/ThinkingTalking/archive/2010/04/22/319089.html http://www.aygfsteel.com/ThinkingTalking/comments/319089.html http://www.aygfsteel.com/ThinkingTalking/archive/2010/04/22/319089.html#Feedback 0 http://www.aygfsteel.com/ThinkingTalking/comments/commentRss/319089.html http://www.aygfsteel.com/ThinkingTalking/services/trackbacks/319089.html
在DOM 中,我们代表XML 文g的程序设计对象,UCؓ(f)节点QnodesQ。当Internet
Explorer 5 处理被链接的XML 文gq储存于DOM 中时Q它?x)?f)XML
文g的每一个基本组件徏立一个节炏V这些基本组件包括了元素、属性,与处理指令DOM ?x)用不同Ş态的节点来代表不同Ş态的XML
lg。例如,元素是储存在Element 节点中,而属性则是储存在Attribute 节点中。表?-1 列出了这些节点类型最重要的部分?/p>
节点形?/td>
节点对象所代表的XML文glg
节点名称QnodeName 对象属性)
节点的|nodeValue 对象属性)
文gQDocumentQ?/td>
文g阶层中的根节点(代表整个XML 文gQ?/td>
#document
Null
元素QElementQ?/td>
元素
元素形态名U?例如QBOOK)
nullQ包含在元素中的QElementQQ何字W数据,是位在一个或多个子文字节点中Q?/td>
文字QTextQ?/td>
属于p个节点的父节Ҏ(gu)代表的元素,属性及实体的文字?/td>
#text
父XML lg的文?/td>
属性(AttributeQ?/td>
属?(以及其它的名值对Q像处理指o(h)中的名字与?
属性名U?(如Binding)
属性|例如hardcoverQ?/td>
处理指o(h) QProcessing Instruction Q?/td>
处理指o(h)QXML 宣告或自订的处理指o(h)Q?/td>
处理指o(h)的目标(例如xmlQ?/td>
除了目标之外整个处理指o(h)的内容(例如QVersion "1.0"Q?/td>
Ҏ(gu)QCommentQ?/td>
Ҏ(gu)
#comment
在批注符号中的文?/td>
CDATA 区段QCDATASectionQ?/td>
CDATA 区段
#cdata-section
CDATA 区段中的内容
文gcdQDocument
TypeQ?/td>
文g形态宣?/td>
出现在DOCTYPE 宣告中的根元素的名字(例如INVENTORY)
Null
实体QEntityQ?/td>
DTD 中的实体宣告
实体名称Q例如imageQ?/td>
null Q实体值是位在子文字节点中Q?/td>
标签
DTD 中的标签宣告
标签名称Q例如BMPQ?/td>
> null Q卷标的pȝliteralQNotationQ是位在名ؓ(f)SYSTEM ?子Attribute node中)
表格9-1 用来表示不同XML 文glg的基本节点Ş态。这些类型的每一个节炚w是一个程序设计对象,提供了存取相关组件的属性与Ҏ(gu)?/p>
你可以从节点中的nodeName 属性获得每个节点的名称Q详列于表格9-1
中的W三栏)。这个名U是以字W?起始Q代表那些未在文件中命名的XML lg节点的标准名U。(例如Q在XML文g中的Ҏ(gu)q未命名。因此,DOM
用标准名U?comment。)其它节点的名U则是由指定到XML 文g中相对应lg的名U衍生而来。(例如Q代表Ş态BOOK
元素的元素节点也可以命名为BOOK?/p>
你可以从节点的nodeValue 属性取得每个节点的节点|列于表格9-1
中最后一栏)。如果XMLlg拥有一个相关的|例如Q属性)Q该值将?x)被储存于节点的节点g。如果XML
lgq没有节点|例如Q元素)Q则DOM 会(x)把节点D成null。在本章E后Q你学到更多有兛_于表?.1 中各U节点类型的相关知识?/p>
DOM ?x)将XML 文g的节点徏构成?wi)状的阶层结构,反映出XML 文g本n的阶层结构。DOM会(x)建立一个单一文g节点来表C整个XML
文gQƈ其视ؓ(f)阶层l构的根节点。注意,XML元素的逻辑阶层l构Q包含了整个XML 文gQ结构中的根节点Q只是DOM 节点的阶层结构的一个分枝?/p>
参?列表9-1 中的XML 文g范例。(你可以在随书光盘?Dom.xml 案中找到列?-1。)q䆾文g包含了XML 宣告、批注,以及包含子元素与属性的节点元素?/p>
下图展示了节点的阶层l织Q该节点是DOM 所建立用来呈现q䆾范例文g。对于范例文件中的每个组Ӟ该图指出了用来表现每个组件的节点形态(例如Q文件、批注和元素Q以及节点的名称Q下图括号中所C-例如#document?comment 与INVENTORYQ?/p>
Inventory Dom.xml
<?xml version="1.0"?>
<!--File Name:Inventory Dom.xml -->
<INVENTORY>
<BOOK Binding="mass market paperback">
<TITLE> The Adventures of Huckleberry Finn
<AUTHOR Born="1835"> Mark Twain
<PAGES> 298
<PRICE> $5.49
</BOOK>
<BOOK Binding="trade paperback">
<TITLE> The Marble Faun
<AUTHOR Born="1804"> Nathaniel Hawthorne
<PAGES> 473
<PRICE> $10.95
</BOOK>
<BOOK Binding="hardcover">
<TITLE> Moby-Dick
<AUTHOR Born="1819"> Herman Melville
<PAGES> 724
<PRICE> $9.95
</BOOK>
<INVENTORY>
每个节点Q就像可E序化的对象Q提供了属性和Ҏ(gu)Q让你可以存取、显C、管理,和取得对应到XML lg上的信息。例如,nodeName 和nodeValue 属性(?-1 所C)提供了元素的名称及内含倹{?/p>
所有Ş态的节点共同分n一l公q属性与Ҏ(gu)。这些属性与Ҏ(gu)一般是设计来偕同节点一赯作。表?-2 列出了一些比较有用的共同属性。在本章E后你将获得有关q些属性的更多信息及范例?/p>
属?/td>
描述
范例
attributes
该节点的所有非属性的子节点的NamedNodeMap 集合
AttributeNode =Element.attributes.getNamedItem ("Binding");
childNodes
该节点的所有非属性的子节点的NodeList 集合
FirstNode =Element.childNodes (0);
dataType
该节点的数据cdQ只适用于某些类型Attribute 节点Q?/td>
AttributeType =Attribute.dataType;
firstChild
该节点的W一个非属性的子节?/td>
FirstChildNode =Element.firstChild;
lastChild
该节点的最后一个非属性的子节?/td>
LastChildNode =Element.lastChild;
nextSibling
与本节点位于同一层的后l前一节点
NextElement =Element.nextSibling;
nodeName
节点的名U?/td>
ElementName =Element.nodeName;
nodeType
表示该节点类型的数值码
NodeTypeCode =Node.nodeType;
nodeTypeString
包含该节点类型的字符Ԍ以小写字母撰写(例如Q?element"?attribute"Q?/td>
NodeTypeString=Node.nodeTypeString;
nodeValue
该节点的|如果不含值则为nullQ?/td>
AttributeValue =Attribute.nodeValue;
ownerDocument
包含本节点的文g的根Document 节点
Document =Node.ownerDocument;
parentNode
该节点的父节点(q不适用于Attribute 节点Q?/td>
ParentElement =Element.parentNode;
previousSibling
与本节点位于同一层的先前节?/td>
PreviousElement =Element.previousSibling;
text
该节点与其后裔节点的全部文字内容
AllCharacterData =Element.text;
xml
该节点与其后裔节点的全部XML 内容
XMLContent =Element.xml;
提示
有关属于不同形态节点对象的所有属性、方法,与事件的详细叙述Q请参阅由MSDN 所提供的信息,|址?
http://msdn.microsoft.com/xml/reference/scriptref/xmldom_Objects.asp
。注意在该网中Q前|字W串XMLDOM 作ؓ(f)表格9-1 中每个节点名U的开端-例如QXMLDOMDocument、XMLDOMElement
与XMLDOMText.Q这些是每个节点形态的E序接口的名U。) 也注意共同的节点属性和Ҏ(gu)被列于XMLDOMNode 的后面?/p>
除了共同的属性和Ҏ(gu)外,每种cd的节炚w提供了附加的属性和Ҏ(gu)Q来处理该节点类型所代表的特DXML
lg。例如,文g节点QDocument nodeQ提供了parseError
属性,内含M处理文g时所产生错误的相关信息。只有文件节Ҏ(gu)有这U属性。在本章E后Q你看C份描q某些节点类型的有用节点Ҏ(gu)属性和Ҏ(gu)的表根{?/p>
提示
如果某个属性不适用于特定节点,则该属性将包含null 倹{例如,如果某节点代表一个不包含M属性的XML 文gQ如Document
或Comment nodeQ时Q其attributes
属性将被设为null。如果某节点代表某个不含有Q何数据类型(只有某些属性拥有数据类型)的XML lgӞ该节点的dataType
属性将被设为null。如果节点ƈ没有M非属性的子节点,其firstChild 属性将为null。而如果节点ؓ(f)不含值的cdQ如Document
或Element nodeQ,其nodeValue 属性将被设为null?/p>
注意Q表?-2 中,每个节点拥有一l属性,让你可以览节点的阶层架构,来从目前节点存取其它节点的资料。例如,在列?-1
中的文gQ如变量Document 包含了文件的根Document节点Q后l的E序代码会(x)昄最接近文g起始部分Ҏ(gu)的内容,而DOM
?x)将?gu)内容储存在Document 节点的第二个子节点中?/p>
alert (Document.childNodes(1).nodeValue);
q行E序代码会(x)昄一个消息框Q内含文字「File Name: In-ventory Dom.xml」。透过XML data
island 取得DSO 的XMLDocument 成员对象Q来存取根Document 节点。此Document 节点被视为存取XML
文g的网养IgatewayQ?
你用该节点来存取其它的节点?/p>
]]>ext中文q解决Ҏ(gu) http://www.aygfsteel.com/ThinkingTalking/archive/2008/05/26/202898.htmlThinkingTalking ThinkingTalking Mon, 26 May 2008 05:50:00 GMT http://www.aygfsteel.com/ThinkingTalking/archive/2008/05/26/202898.html http://www.aygfsteel.com/ThinkingTalking/comments/202898.html http://www.aygfsteel.com/ThinkingTalking/archive/2008/05/26/202898.html#Feedback 0 http://www.aygfsteel.com/ThinkingTalking/comments/commentRss/202898.html http://www.aygfsteel.com/ThinkingTalking/services/trackbacks/202898.html 阅读全文 ]]>
վ֩ģ壺
Ϫ |
|
IJ |
|
̶ |
ƽ |
|
Ļ |
|
Ƥɽ |
J |
¡ |
°Ͷ |
̩ |
ˮ |
|
ˮ |
|
|
|
|
ɳ |
|
ຣʡ |
ʲ |
ɽ |
|
|
|
״ |
۳ |
廪 |
|
ʲ |
¡ |
ƽ |
Ϲ |
ʲ |
ɽ |
лͨ |
|