XML初學進階學習筆記(3)(轉)
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- XML初學進階學習筆記(1)(轉)XML筆記
- XML初學進階學習筆記(5)(轉)XML筆記
- XML初學進階學習筆記(4)(轉)XML筆記
- XML初學進階學習筆記(2)(轉)XML筆記
- Go 進階學習筆記Go筆記
- Swift進階學習筆記Swift筆記
- Git進階學習筆記Git筆記
- nginx進階-3(32-34天)學習筆記Nginx筆記
- python進階學習筆記(一)Python筆記
- Koa2進階學習筆記筆記
- 線段樹進階 學習筆記筆記
- Vue 學習筆記 (一) -- 初識 VueCli 3Vue筆記
- 初學進階
- JavaScript學習筆記 - 進階篇(3)- 流程控制語句JavaScript筆記
- Python學習筆記(進階篇一)Python筆記
- spark學習筆記--進階程式設計Spark筆記程式設計
- 安卓初學基礎學習筆記安卓筆記
- XML學習筆記–背誦版XML筆記
- 【Go學習筆記16】解析xmlGo筆記XML
- Redux 進階 – react 全家桶學習筆記(二)ReduxReact筆記
- Redux 進階 - react 全家桶學習筆記(二)ReduxReact筆記
- 基於docker 初學 MongoDb 學習筆記DockerMongoDB筆記
- [寒假學習筆記](二)Python初學筆記Python
- 強化學習-學習筆記3 | 策略學習強化學習筆記
- 人臉識別學習筆記二:進階篇筆記
- 【Nginx學習筆記】-初識NginxNginx筆記
- JVM學習筆記——初識JVMJVM筆記
- Scala 學習筆記 (1):初見筆記
- R/3 ABAP開發學習筆記(轉)筆記
- Vue學習筆記3Vue筆記
- Thymeleaf 3學習筆記筆記
- CCNA學習筆記3筆記
- mysql學習筆記3MySql筆記
- Vue 3 學習筆記Vue筆記
- Python學習筆記(一)——初學PythonPython筆記
- sed學習筆記(轉)筆記
- gurb學習筆記(轉)筆記
- ANT學習筆記 (轉)筆記