資源描述:
《使用DOM訪問XML文檔》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第7章使用DOM訪問XML文檔7.1DOM概述7.1DOM對象架構(gòu)7.2DOM客戶端編程訪問XML7.3DOM服務(wù)器端編程訪問XML7.47.1DOM概述7.1.1DOM簡介DOM的中文含義為文檔對象模型,由一組代表HTML文檔或者XML文檔中不同組成部分的程序?qū)ο蠼M成,這些對象提供了各自的屬性和方法,使得應(yīng)用程序開發(fā)者能夠通過編寫腳本程序來操縱和顯示文檔中相應(yīng)的組件。使用DOM技術(shù)訪問XML文檔,具有強(qiáng)大的功能和靈活性,不僅可用來編寫訪問本地XML文檔的程序,還可用來編寫訪問服務(wù)器端XML文檔的應(yīng)用程序??梢园袲OM看作是一種ActiveX對象,它綁定封裝了若干個(gè)對XML文檔進(jìn)行訪問的
2、API,應(yīng)用程序開發(fā)者能夠使用腳本語言來調(diào)用DOM對象的屬性與方法,達(dá)到訪問、操作XML文檔各個(gè)組成部分的目的。DOM以樹狀的層次節(jié)點(diǎn)來儲存XML文檔中的所有數(shù)據(jù),可以使用DOM節(jié)點(diǎn)樹來訪問任何形式的XML文檔,并且可以使用DOM提供的編程接口來顯示和操縱XML文檔中的任何組件,包括元素、屬性、處理指令、注釋及實(shí)體等。7.1.2DOM與SAX除了DOM方式之外,XML技術(shù)還提供了SAX方式來讀取和處理XML文檔的數(shù)據(jù)。SAX的英文名稱為SimpleAPIforXML,即應(yīng)用于XML的簡單API。DOM的運(yùn)作方式是將整個(gè)文檔讀入內(nèi)存,并根據(jù)文檔中定義的元素及其屬性構(gòu)建一個(gè)樹型結(jié)構(gòu)用來描述該
3、文檔。DOM方式提供了直接指向XML文檔各組成部分的API,給程序設(shè)計(jì)帶來了方便。但是,由于DOM方式首先將整個(gè)文檔載入內(nèi)存,然后生成一顆相應(yīng)的節(jié)點(diǎn)對象樹,當(dāng)XML文檔的數(shù)據(jù)量比較大或文檔結(jié)構(gòu)比較復(fù)雜時(shí),將要占據(jù)大量的內(nèi)存空間,其解析過程也會需要比較長的時(shí)間。SAX方式針對處理大型XML文檔和高吞吐量的情況作了優(yōu)化,它會遍歷整個(gè)文檔,并逐一訪問文檔中的每一項(xiàng)內(nèi)容。SAX方式的優(yōu)點(diǎn)是:無論XML文檔有多大,都只將下一項(xiàng)內(nèi)容載入內(nèi)存中。因?yàn)楹雎粤藶槲臋n內(nèi)容創(chuàng)建一顆對象樹的過程,而能更快地執(zhí)行。與DOM方式相比,SAX方式對XML文檔的處理缺乏一定的靈活性和規(guī)范性,并且SAX應(yīng)用程序一般都比較
4、長,所以本章將只介紹通過DOM方式對XML文檔的訪問與處理。7.1.3DOM結(jié)構(gòu)樹當(dāng)IE瀏覽器內(nèi)含的XML解析器處理被載入的XML文檔并根據(jù)文檔的邏輯結(jié)構(gòu)生成一棵對應(yīng)的DOM樹時(shí),它會為XML文檔中的每一個(gè)基本組件建立一個(gè)樹中的對應(yīng)節(jié)點(diǎn)。這些基本組件包括元素、屬性、注釋、實(shí)體與處理指令等,DOM會使用不同類型的節(jié)點(diǎn)來代表不同類型的XML組件。表7-1列出了DOM節(jié)點(diǎn)的各種類型及簡短說明。表7-1DOM節(jié)點(diǎn)的各種類型節(jié)點(diǎn)類型說明節(jié)點(diǎn)名稱Document文檔根節(jié)點(diǎn)(代表整個(gè)XML文檔)#documentElement元素節(jié)點(diǎn)元素的實(shí)際名稱Attribute屬性節(jié)點(diǎn)屬性的實(shí)際名稱Text屬于元
5、素或?qū)傩缘奈谋緝?nèi)容#TextProcessingInstruction處理指令節(jié)點(diǎn)處理指令的實(shí)際名稱(例如xml)Comment注釋節(jié)點(diǎn)#commentCDATASectionCDATA區(qū)段#cdata-sectionDocumentType代表的節(jié)點(diǎn)DTD聲明中的文檔類型名稱EntityDTD中的聲明實(shí)體名稱(例如image)NotationDTD中的符號聲明符號名稱(例如BMP)對于書中的CustomerDom.xml范例文檔,將生成如下圖所示的DOM結(jié)構(gòu)樹。7.2DOM對象架構(gòu)7.2.1DOM對象概述IE瀏覽器支持的XMLDOM為應(yīng)
6、用程序操縱和處理XML文檔提供了各種DOM對象,表7-2列出了各種XMLDOM對象及其對應(yīng)節(jié)點(diǎn)的簡短說明。表7-2各種XMLDOM對象對象說明XMLDOMDocument表示DOM樹的最頂層節(jié)點(diǎn),即根節(jié)點(diǎn)XMLDOMNode表示DOM樹中除根節(jié)點(diǎn)之外的某一個(gè)節(jié)點(diǎn)XMLDOMNodeList表示某個(gè)父節(jié)點(diǎn)之下的一系列兄弟節(jié)點(diǎn)的集合XMLDOMParseError返回錯(cuò)誤信息,包括錯(cuò)誤編號、出錯(cuò)位置等一些相應(yīng)的描述信息XMLDOMAttribute代表一個(gè)屬性節(jié)點(diǎn)XMLDOMDocumentType代表文檔類型描述的相關(guān)信息每一個(gè)不同的節(jié)點(diǎn)對象都有其特定的屬性和方法,但也有許多共同的屬性,表
7、7-3列出了各種類型節(jié)點(diǎn)對象共有的一組屬性。表7-3所有類型節(jié)點(diǎn)共有屬性屬性說明attributes返回包含該節(jié)點(diǎn)所有屬性的NamedNodeMap集合(只讀)childNodes返回包含該節(jié)點(diǎn)所有非屬性子節(jié)點(diǎn)的NodeList集合(只讀)dataType返回該節(jié)點(diǎn)數(shù)據(jù)類型(可讀寫)firstChild該節(jié)點(diǎn)的第一個(gè)非屬性的子節(jié)點(diǎn)(只讀)lastChild該節(jié)點(diǎn)的最后一個(gè)非屬性子節(jié)點(diǎn)(只讀)nextSibling返回位于同一層級的下