Document接口
Document接口代表了整個XML/HTML文檔,因此,它是整棵文檔樹的根,提供了對文檔中的數據進行訪問和操作的入口。
由 於元素、文本節點、注釋、處理指令等都不能脫離文檔的上下文關系而獨立存在,所以在Document接口提供了創建其他節點對象的方法,通過該方法創建的 節點對象都有一個ownerDocument屬性,用來表明當前節點是由誰所創建的以及節點同Document之間的聯系。
在DOM樹中,Document接口同其他接口之間的關系如下圖所示:
由 圖可以看出,Document節點是DOM樹中的根節點,也即對XML文檔進行操作的入口節點。通過Docuemt節點,可以訪問到文檔中的其他節點,如 處理指令、注釋、文檔類型以及XML文檔的根元素節點等等。另外,從上圖我們還可以看出,在一棵DOM樹中,Document節點可以包含多個處理指令、 多個注釋作為其子節點,而文檔類型節點和XML文檔根元素節點都是唯一的。
關於Document接口的IDL(Interface Definition Language接口定義語言)定義和其中一些比較常用的屬性和方法的詳細介紹在許多參考書都可以找到,我們將在后面結合實際例子給予介紹。
Node接口
Node 接口在整個DOM樹中具有舉足輕重的地位,DOM接口中有很大一部分接口是從Node接口繼承過來的,例如,Element、Attr、 CDATASection等接口,都是從Node繼承過來的。在DOM樹中,Node接口代表了樹中的一個節點。一個典型的Node接口如下圖所示:
如圖所示,Node接口提供了訪問DOM樹中元素內容與信息的途徑,並給出了對DOM樹中的元素進行遍歷的支持。
同樣,我們將在后面結合實際例子詳細說明Node接口的具體使用方法。
NodeList接口
NodeList接口提供了對節點集合的抽象定義,它並不包含如何實現這個節點集的定義。NodeList用於表示有順序關系的一組節點,比如某個節點的子節點序列。另外,它還出現在一些方法的返回值中,例如GetNodeByName。
在 DOM中,NodeList的對象是"live"的,換句話說,對文檔的改變,會直接反映到相關的NodeList對象中。例如,如果通過DOM獲得一個 NodeList對象,該對象中包含了某個Element節點的所有子節點的集合,那么,當再通過DOM對Element節點進行操作(添加、刪除、改動 節點中的子節點)時,這些改變將會自動地反映到NodeList對象中,而不需DOM應用程序再做其他額外的操作。
NodeList中的每個item都可以通過一個索引來訪問,該索引值從0開始。
NamedNodeMap接口
實 現了NamedNodeMap接口的對象中包含了可以通過名字來訪問的一組節點的集合。不過注意,NamedNodeMap並不是從NodeList繼承 過來的,它所包含的節點集中的節點是無序的。盡管這些節點也可以通過索引來進行訪問,但這只是提供了枚舉NamedNodeMap中所包含節點的一種簡單 方法,並不表明在DOM規范中為NamedNodeMap中的節點規定了一種排列順序。
與NodeList相同,在DOM中,NamedNodeMap對象也是"live"的。