XML DOM文檔對(duì)象模型解析
這里向大家描述一下XML DOM文檔對(duì)象模型的用法,DOM文檔對(duì)象模型使您能夠以編程方式讀取、處理和修改XML文檔,請(qǐng)看下面詳細(xì)介紹。
XML DOM文檔對(duì)象模型
XML DOM文檔對(duì)象模型類是XML文檔的內(nèi)存中表示形式。DOM文檔對(duì)象模型使您能夠以編程方式讀取、處理和修改XML文檔。XmlReader類也讀取XML,但它提供非緩存的只進(jìn)、只讀訪問。這意味著使用XmlReader無法編輯屬性值或元素內(nèi)容,也無法插入和移除節(jié)點(diǎn)。編輯是DOM文檔對(duì)象模型的主要功能。XML數(shù)據(jù)在內(nèi)存中表示是常見的結(jié)構(gòu)化方法,盡管實(shí)際的XML數(shù)據(jù)在文件中時(shí)或從另一個(gè)對(duì)象傳入時(shí)以線性方式存儲(chǔ)。以下是XML數(shù)據(jù)。
輸入
- <?xmlversionxmlversion="1.0"?>
- <books>
- <book>
- <author>Carson</author>
- <priceformatpriceformat="dollar">31.95</price>
- <pubdate>05/01/2001</pubdate>
- </book>
- <pubinfo>
- <publisher>MSPress</publisher>
- <state>WA</state>
- </pubinfo>
- </books>
下圖顯示將此XML數(shù)據(jù)讀入DOM文檔對(duì)象模型結(jié)構(gòu)中時(shí)如何構(gòu)造內(nèi)存。
XML文檔結(jié)構(gòu)
在XML文檔結(jié)構(gòu)中,此圖中的每個(gè)圓圈表示一個(gè)節(jié)點(diǎn)(稱為XmlNode對(duì)象)。XmlNode對(duì)象是DOM樹中的基本對(duì)象。XmlDocument類(擴(kuò)展XmlNode)支持用于對(duì)整個(gè)文檔執(zhí)行操作(例如,將文檔加載到內(nèi)存中或?qū)ML保存到文件中)的方法。此外,XmlDocument提供了查看和處理整個(gè)XML文檔中的節(jié)點(diǎn)的方法。XmlNode和XmlDocument都具有性能和可用性增強(qiáng),并通過方法和屬性執(zhí)行下列操作:
◆訪問和修改DOM文檔對(duì)象模型特定的節(jié)點(diǎn),如元素節(jié)點(diǎn)、實(shí)體引用節(jié)點(diǎn)等。
◆除檢索節(jié)點(diǎn)包含的信息(如元素節(jié)點(diǎn)中的文本)外,還檢索整個(gè)節(jié)點(diǎn)。
注意
如果應(yīng)用程序不需要DOM提供的結(jié)構(gòu)或編輯功能,則XmlReader和XmlWriter類提供對(duì)XML的非緩存的只進(jìn)流訪問。有關(guān)更多信息,請(qǐng)參見用XmlReader讀取XML和使用XmlWriter編寫XML。
Node對(duì)象具有一組方法和屬性以及基本的和定義完善的特性。其中的某些特性包括:
◆節(jié)點(diǎn)有單個(gè)父節(jié)點(diǎn),父節(jié)點(diǎn)是與節(jié)點(diǎn)相鄰的上一級(jí)節(jié)點(diǎn)。唯一沒有父級(jí)的節(jié)點(diǎn)是文檔根,因?yàn)樗琼敿?jí)節(jié)點(diǎn),包含了文檔本身和文檔片段。
◆大多數(shù)節(jié)點(diǎn)可以有多個(gè)子節(jié)點(diǎn),子節(jié)點(diǎn)是與節(jié)點(diǎn)相鄰的下一級(jí)節(jié)點(diǎn)。以下是可以有子節(jié)點(diǎn)的節(jié)點(diǎn)類型列表。
Document
DocumentFragment
EntityReference
Element
Attribute
XmlDeclaration、Notation、Entity、CDATASection、Text、Comment、ProcessingInstruction和DocumentType節(jié)點(diǎn)沒有子節(jié)點(diǎn)。
◆處于同一級(jí)別、在關(guān)系圖中由book和pubinfo節(jié)點(diǎn)表示的節(jié)點(diǎn)是同輩。
DOM文檔對(duì)象模型的一個(gè)特性是處理屬性的方式。屬性是不屬于父子關(guān)系和同輩關(guān)系的節(jié)點(diǎn)。屬性被視為元素節(jié)點(diǎn)的屬性,由名稱和值對(duì)組成。例如,如果存在由與元素price關(guān)聯(lián)的format="dollar"組成的XML數(shù)據(jù),則單詞format是名稱,format屬性的值是dollar。為檢索price節(jié)點(diǎn)的format="dollar"屬性,可以在游標(biāo)位于price元素節(jié)點(diǎn)時(shí)調(diào)用GetAttribute方法。有關(guān)更多信息,請(qǐng)參見訪問DOM中的屬性。
將XML讀入內(nèi)存時(shí)會(huì)創(chuàng)建節(jié)點(diǎn)。然而,并非所有節(jié)點(diǎn)都是同一類型。XML中的元素具有不同于處理指令的規(guī)則和語法。因此,在讀取各種數(shù)據(jù)時(shí),將為每個(gè)節(jié)點(diǎn)分配一種節(jié)點(diǎn)類型。此節(jié)點(diǎn)類型確定節(jié)點(diǎn)的特性和功能。
有關(guān)在內(nèi)存中生成的節(jié)點(diǎn)類型的更多信息,請(qǐng)參見XML節(jié)點(diǎn)類型。有關(guān)在節(jié)點(diǎn)樹中創(chuàng)建的對(duì)象的更多信息,請(qǐng)參見將對(duì)象層次結(jié)構(gòu)映射到XML數(shù)據(jù)。
Microsoft擴(kuò)展了萬維網(wǎng)聯(lián)合會(huì)(W3C)DOM級(jí)別1和級(jí)別2中可用的API,使XML文檔的使用更容易。在完全支持W3C標(biāo)準(zhǔn)的同時(shí),??加的類、方法和屬性增加了使用W3CXMLDOM無法完成的功能。新類使您能夠訪問關(guān)系數(shù)據(jù),為您提供與ADO.NET數(shù)據(jù)同步、同時(shí)將數(shù)據(jù)作為XML公開的方法。有關(guān)更多信息,請(qǐng)參見使DataSet與XmlDataDocument同步。
在將XML數(shù)據(jù)讀入內(nèi)存,以更改其結(jié)構(gòu)、添加或移除節(jié)點(diǎn)或者與在元素包含的文本中一樣修改節(jié)點(diǎn)所保存的數(shù)據(jù)時(shí),DOM文檔對(duì)象模型最有用。不過,在其他方案中,還有其他比DOM更快的類。要對(duì)XML進(jìn)行快速非緩存只進(jìn)流訪問,請(qǐng)使用XmlReader和XmlWriter。如果需要用游標(biāo)模型和XPath進(jìn)行隨機(jī)訪問,請(qǐng)使用XPathNavigator類。
【編輯推薦】
- 探究DOM文檔對(duì)象模型用法
- W3C DOM模型用法詳解
- 深入學(xué)習(xí)DOM模型基礎(chǔ)
- 深入了解JavaScript HTML DOM對(duì)象
- 術(shù)語匯編 Javascript DOM技術(shù)探究



















