Webkit–DOM分析


1:什麼是HTML DOM

HTML 文檔對象模型(HTML Document Object Model)定義了訪問和處理 HTML 文檔的標準方法。

2:HTML DOM組成

DOM 被分爲不同的部分(核心、XML及HTML)和級別(DOM Level 1/2/3):
Core DOM
定義了一套標準的針對任何結構化文檔的對象

對應的WEBKIT源碼中路徑:WebKit\WebCore\dom
XML DOM
提供針對XML的高層的文檔處理方法。

對應的WEBKIT源碼中路徑:WebKit\WebCore\xml

HTML DOM
提供針對HTML的高層的文檔處理方法。

對應的WEBKIT源碼中路徑:WebKit\WebCore\html

可以用下圖標示其組成:
 
3:HTML DOM的層次

層次結構大致可以使用下面這張圖來標示:
 
在WEBKIT中的節點可以分爲兩類:

1:不能擁有子節點的節點(字符數據),那麼這類節點直接派生之Node.

2:能夠擁有子節點的,這類節點是派生之ContainerNode,ContainerNode其實也是派生之Node節點,只不過增加了擁有子節點的能力。

下面是兩個關鍵函數的實現:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
inline Node* Node::firstChild() const
{
if(!isContainerNode())
return0;
returntoContainerNode(this)->firstChild();
}
 
inline Node* Node::lastChild() const
{
if(!isContainerNode())
return0;
returntoContainerNode(this)->lastChild();
}


4:HTML DOM的核心接口

核心接口主要由四個部分組成:

Document(文檔)——文檔的根節點

Node(節點)——表示文檔樹的節點,是大多數接口的父接口

NodeList(節點列表)——有序節點集合(如子樹)

NameNodeMap(命名節點映射)——無序節點集合(由節點名屬性獲得的節點集)

4.1:Document

4.2:Node

4.3:NodeList

4.4NameNodeMap
發佈了3 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章