資源描述:
《ch8 XML Dom編程模型》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、第八章XMLDOM編程模型學(xué)習(xí)目標(biāo)掌握DOM的概念熟練掌握DOM文檔樹模型XML解析器概述DOM解析器的模型結(jié)構(gòu)與使用XML的應(yīng)用因為XML是個公共格式(它不專屬于任何一家公司),所以不必?fù)?dān)心XML技術(shù)會成為少數(shù)公司的盈利工具,XML不是一個依附于特定瀏覽器的語言。XML的主要目的是用結(jié)構(gòu)化的方式來表示數(shù)據(jù),有點類似于數(shù)據(jù)庫,提供結(jié)構(gòu)化視圖。只是數(shù)據(jù)庫提供了更強有力的數(shù)據(jù)存儲和分析能力。例如:數(shù)據(jù)索引、排序、查找等等。XML僅僅是展示數(shù)據(jù),正是這一特點讓它與眾不同。對于小型的系統(tǒng),沒有必要人動干戈的
2、動用數(shù)據(jù)庫。一旦用上了數(shù)據(jù)庫,需要建表、配置、寫JDBC代碼。使用XML作為存儲機制不見得就比數(shù)據(jù)庫差。而且可以用DOM/SAX很快的存取XML中的數(shù)據(jù),這些數(shù)據(jù)還可以用DTD/Schema來維護(hù)其有效性。因為只是文件讀寫,數(shù)據(jù)量少幾乎只剩下打開文件的時間;數(shù)據(jù)庫要建立連接再讀數(shù)據(jù),在處理小型數(shù)據(jù)時反而效率低;XML是完全徹底的平臺無關(guān),而數(shù)據(jù)庫哪怕是經(jīng)過ODBC,JDBC一串的轉(zhuǎn)換,恐怕還是和平臺有很大的關(guān)系,一旦需要移植,不可避免的傷筋動骨。我們可以把整個XML看成是一個數(shù)據(jù)庫系統(tǒng),XML文本本
3、身可以看成是數(shù)據(jù)庫中的數(shù)據(jù)區(qū),DTD/Schema可以看成是數(shù)據(jù)庫模式設(shè)計,XQL可以看成是數(shù)據(jù)庫查詢語言,SAX或DOM可以看成是數(shù)據(jù)庫處理工具。當(dāng)然它還是缺少數(shù)據(jù)庫所必須的一些東西,比如有效的存儲組織、索引結(jié)構(gòu)、安全性、事務(wù)處理、數(shù)據(jù)完整性、觸發(fā)器、多用戶處理機制等等。XML解析技術(shù)的重要性XML本身只是以純文本對數(shù)據(jù)進(jìn)行編碼的一種格式,要想利用XML,或者說利用XML文件中所編碼的數(shù)據(jù),必須先將數(shù)據(jù)從純文本中解析出來,因此要求必須有一個能夠識別XML文檔中信息的文本文件閱讀器(XML解析器),
4、用來解釋XML文檔并提取其中的內(nèi)容。顯然,XML解析器在XML應(yīng)用程序中有著重要的地位。XML解析器【重點掌握】在解析XML文檔時,通常是利用現(xiàn)有的XML解析器對XML文檔進(jìn)行解析,而編寫的應(yīng)用程序則通過解析器提供的API接口來獲取XML數(shù)據(jù)。多數(shù)解析器提供了至少兩種API,一種是對象模型API(DOM)和一個事件API(SAX)。XML文檔XML解析器API應(yīng)用程序什么是XML解析器XML解析器應(yīng)該是這樣的一個程序:XML解析器能夠?qū)ML文檔進(jìn)行分析XML解析器提供訪問XML數(shù)據(jù)的應(yīng)用程序接口(
5、API)XML解析器可以讀取、更新、創(chuàng)建、操作一個XML文檔如何使用一個解析器?通常情況下,按如下步驟來使用XML解析器:創(chuàng)建一個解析器對象將您的XML文檔傳遞給解析器處理結(jié)果DOM:是用與平臺無關(guān)的方式表示XML文檔的官方W3C標(biāo)準(zhǔn)。這個層次結(jié)構(gòu)允許開發(fā)人員在樹中尋找特定信息。分析該結(jié)構(gòu)的時候需要加載整個文檔和構(gòu)造層級結(jié)構(gòu),然后才能進(jìn)行其他工作。因此DOM被認(rèn)為是基于樹或者是基于對象的。優(yōu)點:可以任意的修改DOM以便應(yīng)用程序能對數(shù)據(jù)和結(jié)構(gòu)出更改。另外還可以任何時候在樹中上下導(dǎo)航。缺點:基于大文件的
6、加載速度很慢,因此它需要全部加載后才能操作。四種XML解析器SAX:是一種基于事件驅(qū)動的解析技術(shù)。SAX解析器在解析過程中會觸發(fā)一系列的事件,開發(fā)者通過對事件的捕獲編寫代碼來讀取數(shù)據(jù),處理機制非常類似與流媒體。優(yōu)點:分析能夠立即進(jìn)行不需要等待所有的數(shù)據(jù)被處理才進(jìn)行。由于應(yīng)用程序只是在讀取數(shù)據(jù)的時候檢查數(shù)據(jù),因此不需要將數(shù)據(jù)存儲在內(nèi)存中,可以大大提高處理的速度。缺點:因為在解析過程沒有創(chuàng)建相對應(yīng)的對象沒有實現(xiàn)對象的持久化,所以無法對文檔進(jìn)行修改和創(chuàng)建,只適合讀取操作。四種XML解析器JDOM:是Jav
7、a特定文檔模型,簡化了與XML文檔進(jìn)行交互并且比使用DOM的速度更快。JDOM中使用抽象類代替接口,另一方面使用了大量的集合類。DOM4J:是一個非常優(yōu)秀的開源的JAVAXMLAIP。面向接口編程,支持多種解析機制。很多開源項目和實際的項目開發(fā)中,往往會優(yōu)先考慮使用dom4j作為XML解析器。四種XML解析器應(yīng)用程序與XML文檔的關(guān)系圖現(xiàn)在能提供這個功能的XML應(yīng)用程序接口(API)有以下兩個:文檔對象模式(DocumentObjectModel,DOM)它是由W3C組織制定的一個文檔模型規(guī)范。XM
8、L簡單應(yīng)用程序接口(SimpleAPIforXML,SAX)它是由XML_DEV郵件列表成員開發(fā)的。DOM接口應(yīng)用程序XML解析器XML文檔XMLSAX接口DOM文檔樹模型【重點掌握】XML文檔中的每個成分都是一個節(jié)點,DOM是這樣規(guī)定的:整個文檔是一個文檔節(jié)點每個XML標(biāo)簽是一個元素節(jié)點包含在XML元素中的文本是文本節(jié)點每一個XML屬性是一個屬性節(jié)點注釋屬于注釋節(jié)點<