DOM概覽
發表時間:2024-06-20 來源:明輝站整理相關軟件相關文章人氣:
[摘要]DOM概覽作者: 常明 寫作日期:2000-4-26 DOM是對XML開發者相當重要的,對于XML應用開發來說就是一個對象化的XML數據接口。最基本的XML開發通常都要使用它。簡單說,DOM就是一組對象的集合,通過操縱這些對象,我們就能操縱XML和HTML數據。 DOM全稱是Document ...
DOM概覽
作者: 常明 寫作日期:2000-4-26
DOM是對XML開發者相當重要的,對于XML應用開發來說就是一個對象化的XML數據接口。最基本的XML開發通常都要使用它。簡單說,DOM就是一組對象的集合,通過操縱這些對象,我們就能操縱XML和HTML數據。
DOM全稱是Document Object Model,人如其名,DOM就是一個文檔對象組成的模型,它不光用于XML,最先是起于HTML的。對作過Web開發的人,特別是寫過動態DHTML的人,應該對HTML中的文檔對象有一定概念,DOM就是這樣一個對象模型的標準。
DOM另外又是一個接口,一個與語言無關的接口,應用通過這個接口來和XML或HTML內的數據打交道。無論是在瀏覽器里,還是在瀏覽器外,在服務器上,還是客戶端,我們只要用XML就會碰到DOM。
1. DOM的來由
為什么要定義這樣一個接口呢?這樣講吧,我們知道數據庫有標準的ODBC/JDBC這樣的接口規范,那么我們使用XML數據如果沒有一個統一的接口,我們寫程序是不是要每個人都要自己去處理XML的語法細節,如果我們手頭有XML的語法分析器(有人譯為解析器),它也必然有一個接口讓我們通過它訪問XML數據,所有語法分析器的接口如果都不相同,我們開發就必須針對某一個分析器,如果換了分析器,程序就必須重寫。到這里,又和數據庫有可比性了,我們編數據庫應用可以不管后面的數據庫系統究竟是ORACLE還是SYBASE,或INFORMIX,是因為有了ODBC,所以要是我們做XML應用開發,就應該有一個統一的XML數據接口,這個接口就是DOM。
2. DOM的三部分
目前的DOM分為 核心(core)、HTML、XML三部分。
核心:
這部分是結構化文檔比較底層的對象的集合,但他們就已經可以表達出任何HTML和XML文件了。
HTML和XML
這兩部分是專為XML和HTML提供的另外的高級接口,使操縱者兩類文件更方便。98年的只有HTML部分。
3.DOM組成
這里有Vance Christiaanse給出的DOM的一個整體的圖,可以使大家有一個DOM模型基本組成的概念。要看此圖 請點這里(比較大哦)。
4 文件樹
DOM中的最基本對象應該就是Node了。從它又派生出許多類型的node。所有這些node組成一棵文件樹,它包含了XML或 HTML文檔的幾乎全部信息。
在結構化文檔中,信息是按層次化的樹形結構組織的。所以結構化文檔的模型的組織也必然是樹形的。
如一本書的組成是
書----標題
---正文---第一章-----第一節---段
--第二章 .....
Node簡單的說,就是上面樹形結構中的節點,但對XML來說還包括其他XML語法相關的節點,包括XML聲明,文件類型聲明,處理指令等等。
Node提供一些基本屬性和操作,各種類型的Node則繼承Node的屬性和操作,同時有各自特殊的屬性和操作。比如ElementNode
5 基本對象
上面已經講了DOM中最基本的對象就是節點,它的接口定義如下:
從NODE派生出的幾個比較重要的節點類型有Document Element, Attribute,Text:
Document是DOM樹的根,它代表一個完整的XML文檔。它會有一些自己的子節點,至少應該有一個文檔元素的子節點,這個節點類型為Element,是XML文件最外層的根元素,此外他還可能有DocumentType(唯一),ProcessingInstruction,Comment這幾種作為子節點。
Element代表XML元素,是最常用的節點,它可以組成以它為根的DOM的子樹。他還可以有Element子節點,以及Attribut,Text,ProcessingInstruction,CDATASection,Comment子節點。
Attribute是XML元素的屬性,它的父節點必然是Element,它的子節點有Text和EntityReference。
除了Node,DOM里還有兩個比較重要的對象:
NodeList它實現的一個節點的序列,用于表示有順序關系的一組節點,比如某個節點的孩子節點序列,它還出現在一些方法的返回值中,例如GetNodeByName。
NamedNodeMap它表示的是一組節點和其唯一的名字的對應關系,這個對象主要用在屬性節點的表示上。
6 DOM的版本
目前的DOM level one是W3C1998年8月18日通過的,現在w3c正在進行DOM2的制定。
DOM2我們將在以后的文章中介紹。
7 編程
DOM 的具體使用和編程不是很難,現在DOM的實現主要是以部件的形式提供比如MSXML,和JAVA實現比如XML4J。這兩種實現,對我們使用它的接口來說,大同小異,但許多實現都加了自己的擴展的接口,這也是我們選擇時考慮比較多的。
DOM接口的具體的使用,我會在相關的文章中討論。