Java與XML聯(lián)合編程之DOM篇

Java與XML聯(lián)合編程之DOM篇

ID:41032314

大?。?24.00 KB

頁數(shù):12頁

時間:2019-08-14

Java與XML聯(lián)合編程之DOM篇_第1頁
Java與XML聯(lián)合編程之DOM篇_第2頁
Java與XML聯(lián)合編程之DOM篇_第3頁
Java與XML聯(lián)合編程之DOM篇_第4頁
Java與XML聯(lián)合編程之DOM篇_第5頁
資源描述:

《Java與XML聯(lián)合編程之DOM篇》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在工程資料-天天文庫。

1、Java與XML聯(lián)合編程之DOM篇來源︰網(wǎng)絡轉(zhuǎn)載作者︰揚帆時間︰2005-08-24點擊︰991DOM初步?DOM是Document?Object?Model的縮寫,即文檔對象模型。前面說過,XML將數(shù)據(jù)組織為一顆樹,所以DOM就是對這顆樹的一個對象描敘。通俗的說,就是通過解析XML文檔,為XML文檔在邏輯上建立一個樹模型,樹的節(jié)點是一個個對象。我們通過存取這些對象就能夠存取XML文檔的內(nèi)容。?下面我們來看一個簡單的例子,看看在DOM中,我們是如何來操作一個XML文檔的。?這是一個XML文檔,也是我們要操作的

2、對象︰?Good-bye?serialization,?hello?Java!?下面,我們需要把這個文檔的內(nèi)容解析到一個個的Java對象中去供程序使用,利用JAXP,我們只需幾行代碼就能做到這一點。首先,我們需要建立一個解析器工廠,以利用這個工廠來獲得一個具體的解析器對象︰?DocumentBuilderFactory?dbf?=?DocumentBuil

3、derFactory.newInstance();?我們在這里使用DocumentBuilderFacotry的目的是為了創(chuàng)建與具體解析器無關的程序,當DocumentBuilderFactory類的靜態(tài)方法newInstance()被調(diào)用時,它根據(jù)一個系統(tǒng)變量來決定具體使用哪一個解析器。又因為所有的解析器都服從于JAXP所定義的接口,所以無論具體使用哪一個解析器,代碼都是一樣的。所以當在不同的解析器之間進行切換時,只需要更改系統(tǒng)變量的值,而不用更改任何代碼。這就是工廠所帶來的好處。這個工廠模式的具體實現(xiàn),可

4、以參看下面的類圖。?DocumentBuilder?db?=?dbf.newDocumentBuilder();?當獲得一個工廠對象後,使用它的靜態(tài)方法newDocumentBuilder()方法可以獲得一個DocumentBuilder對象,這個對象代表了具體的DOM解析器。但具體是哪一種解析器,微軟的或者IBM的,對于程序而言並不重要。?然後,我們就可以利用這個解析器來對XML文檔進行解析了︰?Document?doc?=?db.parse("c:/xml/message.xml");?DocumentB

5、uilder的parse()方法接受一個XML文檔名覂^ 淙氬問 禱匾桓ocument對象,這個Document對象就代表了一個XML文檔的樹模型。以後所有的對XML文檔的操作,都與解析器無關,直接在這個Document對象上進行操作就可以了。而具體對Document操作的方法,就是由DOM所定義的了。?Jaxp支持W3C所推薦的DOM?2。如果你對DOM很熟悉,那麼下面的內(nèi)容就很簡單了︰只需要按照DOM的規(guī)範來進行方法調(diào)用就可以。當然,如果你對DOM不清楚,也不用著急,後面我們會有詳細的介紹。在這兒,你所要

6、知道並牢記的是︰DOM是用來描敘XML文檔中的數(shù)據(jù)的模型,引入DOM的全部原因就是為了用這個模型來操作XML文檔的中的數(shù)據(jù)。DOM規(guī)範中定義有節(jié)點(即對象)、屬性和方法,我們通過這些節(jié)點的存取來存取XML的數(shù)據(jù)。?從上面得到的Document對象開始,我們就可以開始我們的DOM之旅了。使用Document對象的getElementsByTagName()方法,我們可以得到一個NodeList對象,一個Node對象代表了一個XML文檔中的一個標簽元素,而NodeList對象,觀其名而知其意ㄐ@淼氖且桓ode對象

7、的列表︰?NodeList?nl?=?doc.getElementsByTagName("message");?我們通過這樣一條語句所得到的是XML文檔中所有標簽對應的Node對象的一個列表。然後,我們可以使用NodeList對象的item()方法來得到列表中的每一個Node對象︰?Node?my_node?=?nl.item(0);?當一個Node對象被建立之後,保存在XML文檔中的數(shù)據(jù)就被提取出來並封裝在這個Node中了。在這個例子中,要提取Message標簽內(nèi)的內(nèi)容,我們通常會使用No

8、de對象的getNodeValue()方法︰?String?message?=?my_node.getFirstChild().getNodeValue();?請注意,這里還使用了一個getFirstChild()方法來獲得message下面的第一個子Node對象。雖然在message標簽下面除了文本外並沒有其它子標簽或者屬性,但是我們堅持在這里使用getFirseChild()方法,這主要和W3C

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。