XML初學進階學習筆記(3)(轉)

amyz發表於2007-08-12
XML初學進階學習筆記(3)(轉)[@more@]

  25、DOM的全稱是Document Object Model,也即文件物件模型。在應用程式中,基於DOM的XML分析器將一個XML文件轉換成一個物件模型的集合(通常稱DOM樹),應用程式正是透過對這個物件模型的操作,來實現對XML文件資料的操作。透過DOM介面,應用程式可以在任何時候訪問XML文件中的任何一部分資料,因此,這種利用DOM介面的機制也被稱作隨機訪問機制。

  DOM介面提供了一種透過分層物件模型來訪問XML文件資訊的方式,這些分層物件模型依據XML的文件結構形成了一棵節點樹。無論XML文件中所描述的是什麼型別的資訊,即便是製表資料、專案列表或一個文件,利用DOM所生成的模型都是節點樹的形式。也就是說,DOM強制使用樹模型來訪問XML文件中的資訊。由於XML本質上就是一種分層結構,所以這種描述方法是相當有效的。

  26、SAX的全稱是Simple APIs for XML,也即XML簡單應用程式介面。與DOM不同,SAX提供的訪問模式是一種順序模式,這是一種快速讀寫XML資料的方式。當使用SAX分析器對XML文件進行分析時,會觸發一系列事件,並啟用相應的事件處理函式,應用程式透過這些事件處理函式實現對XML文件的訪問,因而SAX介面也被稱作事件驅動介面。27、對於XML應用開發來說,DOM就是一個物件化的XML資料介面,一個與語言無關、與平臺無關的標準介面規範。它定義了HTML文件和XML文件的邏輯結構,給出了一種訪問和處理HTML文件和XML文件的方法。利用DOM,程式開發人員可以動態地建立文件,遍歷文件結構,新增、修改、刪除文件內容,改變文件的顯示方式等等。可以這樣說,文件代表的是資料,而DOM則代表瞭如何去處理這些資料。無論是在瀏覽器裡還是在瀏覽器外,無論是在伺服器上還是在客戶端,只要有用到XML的地方,就會碰到對DOM的應用。

  作為W3C的標準介面規範,目前,DOM由三部分組成,包括:核心(core)、HTML和XML。核心部分是結構化文件比較底層物件的集合,這一部分所定義的物件已經完全可以表達出任何HTML和XML文件中的資料了。HTML介面和XML介面兩部分則是專為操作具體的HTML文件和XML文件所提供的高階介面,使對這兩類檔案的操作更加方便。

  目前,DOM有兩個版本,一個是由W3C於1998年8月18日透過的DOM Level 1,另一個則是正在制定過程中的DOM Level 2,W3C已於2000年3月7日透過了DOM Level 2的候選推薦版本。28、在DOM介面規範中,有四個基本的介面:Document,Node,NodeList以及NamedNodeMap。在這四個基本介面中,Document介面是對文件進行操作的入口,它是從Node介面繼承過來的。Node介面是其他大多數介面的父類,象Documet,Element,Attribute,Text,Comment等介面都是從Node介面繼承過來的。NodeList介面是一個節點的集合,它包含了某個節點中的所有子節點。NamedNodeMap介面也是一個節點的集合,透過該介面,可以建立節點名和節點之間的一一對映關係,從而利用節點名可以直接訪問特定的節點。

  29、Document介面代表了整個XML/HTML文件,因此,它是整棵文件樹的根,提供了對文件中的資料進行訪問和操作的入口。

  由於元素、文字節點、註釋、處理指令等都不能脫離文件的上下文關係而獨立存在,所以在Document介面提供了建立其他節點物件的方法,透過該方法建立的節點物件都有一個ownerDocument屬性,用來表明當前節點是由誰所建立的以及節點同Document之間的聯絡。

  Document節點是DOM樹中的根節點,也即對XML文件進行操作的入口節點。透過Docuemt節點,可以訪問到文件中的其他節點,如處理指令、註釋、文件型別以及XML文件的根元素節點等等。另外,從上圖我們還可以看出,在一棵DOM樹中,Document節點可以包含多個處理指令、多個註釋作為其子節點,而文件型別節點和XML文件根元素節點都是唯一的。

  30、Node介面在整個DOM樹中具有舉足輕重的地位,DOM介面中有很大一部分介面是從Node介面繼承過來的,例如,Element、Attr、CDATASection等介面,都是從Node繼承過來的。在DOM樹中,Node介面代表了樹中的一個節點。

  31、NodeList介面提供了對節點集合的抽象定義,它並不包含如何實現這個節點集的定義。NodeList用於表示有順序關係的一組節點,比如某個節點的子節點序列。另外,它還出現在一些方法的返回值中,例如GetNodeByName。

  在DOM中,NodeList的物件是"live"的,換句話說,對文件的改變,會直接反映到相關的NodeList物件中。例如,如果透過DOM獲得一個NodeList物件,該物件中包含了某個Element節點的所有子節點的集合,那麼,當再透過DOM對Element節點進行操作(新增、刪除、改動節點中的子節點)時,這些改變將會自動地反映到NodeList物件中,而不需DOM應用程式再做其他額外的操作。

  NodeList中的每個item都可以透過一個索引來訪問,該索引值從0開始。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-950298/,如需轉載,請註明出處,否則將追究法律責任。

相關文章