明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

DOM概覽

[摘要]DOM概覽作者: 常明 寫作日期:2000-4-26 DOM是對XML開發(fā)者相當(dāng)重要的,對于XML應(yīng)用開發(fā)來說就是一個(gè)對象化的XML數(shù)據(jù)接口。最基本的XML開發(fā)通常都要使用它。簡單說,DOM就是一組對象的集合,通過操縱這些對象,我們就能操縱XML和HTML數(shù)據(jù)。 DOM全稱是Document ...
DOM概覽

作者: 常明 寫作日期:2000-4-26



DOM是對XML開發(fā)者相當(dāng)重要的,對于XML應(yīng)用開發(fā)來說就是一個(gè)對象化的XML數(shù)據(jù)接口。最基本的XML開發(fā)通常都要使用它。簡單說,DOM就是一組對象的集合,通過操縱這些對象,我們就能操縱XML和HTML數(shù)據(jù)。

DOM全稱是Document Object Model,人如其名,DOM就是一個(gè)文檔對象組成的模型,它不光用于XML,最先是起于HTML的。對作過Web開發(fā)的人,特別是寫過動(dòng)態(tài)DHTML的人,應(yīng)該對HTML中的文檔對象有一定概念,DOM就是這樣一個(gè)對象模型的標(biāo)準(zhǔn)。

DOM另外又是一個(gè)接口,一個(gè)與語言無關(guān)的接口,應(yīng)用通過這個(gè)接口來和XML或HTML內(nèi)的數(shù)據(jù)打交道。無論是在瀏覽器里,還是在瀏覽器外,在服務(wù)器上,還是客戶端,我們只要用XML就會(huì)碰到DOM。

1. DOM的來由

為什么要定義這樣一個(gè)接口呢?這樣講吧,我們知道數(shù)據(jù)庫有標(biāo)準(zhǔn)的ODBC/JDBC這樣的接口規(guī)范,那么我們使用XML數(shù)據(jù)如果沒有一個(gè)統(tǒng)一的接口,我們寫程序是不是要每個(gè)人都要自己去處理XML的語法細(xì)節(jié),如果我們手頭有XML的語法分析器(有人譯為解析器),它也必然有一個(gè)接口讓我們通過它訪問XML數(shù)據(jù),所有語法分析器的接口如果都不相同,我們開發(fā)就必須針對某一個(gè)分析器,如果換了分析器,程序就必須重寫。到這里,又和數(shù)據(jù)庫有可比性了,我們編數(shù)據(jù)庫應(yīng)用可以不管后面的數(shù)據(jù)庫系統(tǒng)究竟是ORACLE還是SYBASE,或INFORMIX,是因?yàn)橛辛薕DBC,所以要是我們做XML應(yīng)用開發(fā),就應(yīng)該有一個(gè)統(tǒng)一的XML數(shù)據(jù)接口,這個(gè)接口就是DOM。

2. DOM的三部分

目前的DOM分為 核心(core)、HTML、XML三部分。

核心:

這部分是結(jié)構(gòu)化文檔比較底層的對象的集合,但他們就已經(jīng)可以表達(dá)出任何HTML和XML文件了。

HTML和XML

這兩部分是專為XML和HTML提供的另外的高級接口,使操縱者兩類文件更方便。98年的只有HTML部分。

3.DOM組成

這里有Vance Christiaanse給出的DOM的一個(gè)整體的圖,可以使大家有一個(gè)DOM模型基本組成的概念。要看此圖 請點(diǎn)這里(比較大哦)。

4 文件樹

DOM中的最基本對象應(yīng)該就是Node了。從它又派生出許多類型的node。所有這些node組成一棵文件樹,它包含了XML或 HTML文檔的幾乎全部信息。

在結(jié)構(gòu)化文檔中,信息是按層次化的樹形結(jié)構(gòu)組織的。所以結(jié)構(gòu)化文檔的模型的組織也必然是樹形的。

如一本書的組成是


書----標(biāo)題

---正文---第一章-----第一節(jié)---段
 
--第二章 .....

Node簡單的說,就是上面樹形結(jié)構(gòu)中的節(jié)點(diǎn),但對XML來說還包括其他XML語法相關(guān)的節(jié)點(diǎn),包括XML聲明,文件類型聲明,處理指令等等。

Node提供一些基本屬性和操作,各種類型的Node則繼承Node的屬性和操作,同時(shí)有各自特殊的屬性和操作。比如ElementNode

5 基本對象

上面已經(jīng)講了DOM中最基本的對象就是節(jié)點(diǎn),它的接口定義如下:

從NODE派生出的幾個(gè)比較重要的節(jié)點(diǎn)類型有Document Element, Attribute,Text:

Document是DOM樹的根,它代表一個(gè)完整的XML文檔。它會(huì)有一些自己的子節(jié)點(diǎn),至少應(yīng)該有一個(gè)文檔元素的子節(jié)點(diǎn),這個(gè)節(jié)點(diǎn)類型為Element,是XML文件最外層的根元素,此外他還可能有DocumentType(唯一),ProcessingInstruction,Comment這幾種作為子節(jié)點(diǎn)。

Element代表XML元素,是最常用的節(jié)點(diǎn),它可以組成以它為根的DOM的子樹。他還可以有Element子節(jié)點(diǎn),以及Attribut,Text,ProcessingInstruction,CDATASection,Comment子節(jié)點(diǎn)。

Attribute是XML元素的屬性,它的父節(jié)點(diǎn)必然是Element,它的子節(jié)點(diǎn)有Text和EntityReference。

除了Node,DOM里還有兩個(gè)比較重要的對象:

NodeList它實(shí)現(xiàn)的一個(gè)節(jié)點(diǎn)的序列,用于表示有順序關(guān)系的一組節(jié)點(diǎn),比如某個(gè)節(jié)點(diǎn)的孩子節(jié)點(diǎn)序列,它還出現(xiàn)在一些方法的返回值中,例如GetNodeByName。

NamedNodeMap它表示的是一組節(jié)點(diǎn)和其唯一的名字的對應(yīng)關(guān)系,這個(gè)對象主要用在屬性節(jié)點(diǎn)的表示上。

 

6 DOM的版本

目前的DOM level one是W3C1998年8月18日通過的,現(xiàn)在w3c正在進(jìn)行DOM2的制定。

DOM2我們將在以后的文章中介紹。

7 編程

DOM 的具體使用和編程不是很難,現(xiàn)在DOM的實(shí)現(xiàn)主要是以部件的形式提供比如MSXML,和JAVA實(shí)現(xiàn)比如XML4J。這兩種實(shí)現(xiàn),對我們使用它的接口來說,大同小異,但許多實(shí)現(xiàn)都加了自己的擴(kuò)展的接口,這也是我們選擇時(shí)考慮比較多的。

DOM接口的具體的使用,我會(huì)在相關(guān)的文章中討論。





標(biāo)簽:DOM概覽