初學進階
在DOM介面規範中,有四個基本的介面:Document,Node,NodeList以及NamedNodeMap。在這四個基本介面中,Document介面是對文件進行操作的入口,它是從Node介面繼承過來的。Node介面是其他大多數介面的父類,象Documet,Element,Attribute,Text,Comment等介面都是從Node介面繼承過來的。NodeList介面是一個節點的集合,它包含了某個節點中的所有子節點。NamedNodeMap介面也是一個節點的集合,通過該介面,可以建立節點名和節點之間的一一對映關係,從而利用節點名可以直接訪問特定的節點。下面將對這四個介面分別做一些簡單的介紹。
- 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中的節點規定了一種排列順序。
NamedNodeMap表示的是一組節點和其唯一名字的一一對應關係,這個介面主要用在屬性節點的表示上。
與NodeList相同,在DOM中,NamedNodeMap物件也是"live"的。
相關文章
- Java初級~中級~高階進階之路Java
- RxSwift進階(一)-RxSwift的初體驗Swift
- 雲原生技術學習路線圖 初階+中階+高階
- 初學Java的5個階段,你在哪個階段?Java
- mos初階
- Three.js 進階之旅:全景漫遊-初階移動相機版JS
- Java進階容器學習Java
- 指標初階指標
- linux進階命令學習一Linux
- Swift進階學習筆記Swift筆記
- Java學習路線·進階Java
- Python學習路線·進階Python
- Go 進階學習筆記Go筆記
- Java進階專題(二十八) Service Mesh初體驗Java
- shell程式設計,實戰高階進階教學程式設計
- Rust build.rs進階學習RustUI
- 學習NEO開發如何進階
- U-Net學習與進階
- python進階學習筆記(一)Python筆記
- AlertDialog的初階操作
- 初學java進位制轉換方面補充學習Java
- 初學Java,這三個階段你經歷過嗎?Java
- Koa2進階學習筆記筆記
- Java列舉類學習到進階Java
- Android進階必學retrofit原始碼解析Android原始碼
- CTF競賽進階 (一) 密碼學密碼學
- HTTP協議學習---(三)進階篇HTTP協議
- 會計進階學習路線圖
- 線段樹進階 學習筆記筆記
- Java進階學習之事件響應Java事件
- Git環境配置.初階Git
- 讀懂深度學習,走進“深度學習+”階段深度學習
- 從新手到高手,Java初學者要經歷哪些階段?Java
- Python進階學習之程式碼閱讀Python
- spark學習筆記--進階程式設計Spark筆記程式設計
- Go 語言進階學習路線圖Go
- 機器學習30天進階實戰機器學習
- 圖論進階學習筆記(四)(2024.10.4)圖論筆記
- (一)《SQL進階教程》學習記錄--CASESQL