第9講-文檔對象模型(DOM)-SN3005 (XML09)_第1頁
第9講-文檔對象模型(DOM)-SN3005 (XML09)_第2頁
第9講-文檔對象模型(DOM)-SN3005 (XML09)_第3頁
第9講-文檔對象模型(DOM)-SN3005 (XML09)_第4頁
第9講-文檔對象模型(DOM)-SN3005 (XML09)_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、使用使用XMLXML企業(yè)應(yīng)用開發(fā)企業(yè)應(yīng)用開發(fā)第四卷:第四卷: XML解析器文檔對象模型(DOM)軟件工程系 譚翔緯使用使用XML企業(yè)應(yīng)用開發(fā)企業(yè)應(yīng)用開發(fā)2回顧q 了解XPath的概念q 描述上下文結(jié)點(diǎn)、定位路徑和軸 q 列出所有XPath函數(shù)以及它們的使用q 熟悉使用相關(guān)的XSLT元素使用使用XML企業(yè)應(yīng)用開發(fā)企業(yè)應(yīng)用開發(fā)3目標(biāo)q DOM是一組獨(dú)立于語言和平臺的應(yīng)用程序編程接口,描述如何訪問和操縱存儲在結(jié)構(gòu)化XML文檔中的信息q DOM可以表示樹狀結(jié)構(gòu)q 了解W3C為DOM提供一系列API,以供應(yīng)用程序調(diào)用q 掌握DOM API的核心接口q 對結(jié)點(diǎn)的操作包括讀取、添加、刪除、替換和創(chuàng)建,掌握用

2、java實(shí)現(xiàn)這些操作的方法使用使用XML企業(yè)應(yīng)用開發(fā)企業(yè)應(yīng)用開發(fā)4DOM概述q簡單說,DOM是一組獨(dú)立于語言和平臺的應(yīng)用程序編程接口,它能夠描述如何訪問和操縱存儲在XML和HTML文檔中的信息。qDOM的文檔結(jié)構(gòu) DOM文檔是由樹狀結(jié)構(gòu)表示的。樹的每一個點(diǎn)都稱之為結(jié)點(diǎn)。使用使用XML企業(yè)應(yīng)用開發(fā)企業(yè)應(yīng)用開發(fā)5示例DocumentElement:TeamsElement:TeamElement:TeamnameElement:CountryElement:MemberText:AC MilanText:ItalyAttr:AgeAttr:SexText:32Text:maleDOM文檔樹表示Te

3、xt:Pippo使用使用XML企業(yè)應(yīng)用開發(fā)企業(yè)應(yīng)用開發(fā)6DOM工作方式XML文檔XML解析器文檔對象模型(樹狀結(jié)構(gòu)視圖)應(yīng)用程序?qū)ML文檔一次性的裝入內(nèi)存,對文檔進(jìn)行解析根據(jù)文檔中定義的元素、屬性、注釋和處理指令等不同的內(nèi)容進(jìn)行分解,以結(jié)點(diǎn)樹的形式在內(nèi)存中創(chuàng)建XML的表示DOM文檔中的每一個結(jié)點(diǎn)對應(yīng)模型中一個對象,然后根據(jù)對象提供的編程接口,在Application中訪問、操作XML文檔使用使用XML企業(yè)應(yīng)用開發(fā)企業(yè)應(yīng)用開發(fā)7DOM APINodeDocumentDocumentFragmentNodeListChracterDataElementDOMExceptionEntityDOMI

4、mplementationAttrEntityReferenceDocumentTypeCDATASectionNamedNodeMapTextProcessingInstructionNotation不同結(jié)點(diǎn)類型對應(yīng)接口類型表示文檔根結(jié)點(diǎn)表示文檔類型聲明表示文檔片段表示可解析的文本內(nèi)容使用使用XML企業(yè)應(yīng)用開發(fā)企業(yè)應(yīng)用開發(fā)8DOM API接口q下面通過DOM的簡單應(yīng)用,學(xué)習(xí)DOM 的主要核心接口 遍歷文檔 添加結(jié)點(diǎn) 刪除結(jié)點(diǎn) 替換結(jié)點(diǎn)使用使用XML企業(yè)應(yīng)用開發(fā)企業(yè)應(yīng)用開發(fā)9應(yīng)用:遍歷文檔使用使用XML企業(yè)應(yīng)用開發(fā)企業(yè)應(yīng)用開發(fā)10代碼分析-1DocumentBuilderFactory fac

5、tory=DocumentBuilderFactory.newInstance();DocumentBuilder builder=factory.newDocumentBuilder();Document doc=builder.parse(args0);doc.normalize();Element root=doc.getDocumentElement();創(chuàng)建文檔對象生成工廠;實(shí)例化文檔對象;解析XML文檔;normalize()方法可以去掉XML文檔中作為格式化內(nèi)容的空白而映射在DOM樹中不必要的Text Node對象;獲得文檔根元素結(jié)點(diǎn)Document接口使用使用XML企業(yè)應(yīng)用開發(fā)

6、企業(yè)應(yīng)用開發(fā)11代碼分析-2獲得元素子結(jié)點(diǎn)與屬性結(jié)點(diǎn)子結(jié)點(diǎn)的個數(shù)處理屬性結(jié)點(diǎn)遞歸處理子結(jié)點(diǎn)Node結(jié)點(diǎn)常量使用使用XML企業(yè)應(yīng)用開發(fā)企業(yè)應(yīng)用開發(fā)12代碼分析NodeList children=element.getChildNodes();NamedNodeMap attr=element.getAttributes();int r=children.getLength();Node接口使用使用XML企業(yè)應(yīng)用開發(fā)企業(yè)應(yīng)用開發(fā)13NodeList接口:我們可通過節(jié)點(diǎn)列表中的節(jié)點(diǎn)索引號來訪問列表中的節(jié)點(diǎn)(索引號由0開始)。 if(attr!=null)System.out.print(+eleme

7、nt.getNodeName();for(int j=0;j);else if(attr=null)System.out.println();代碼分析NamedNodeMap接口:用于表示可以通過名稱訪問的節(jié)點(diǎn)的集合使用使用XML企業(yè)應(yīng)用開發(fā)企業(yè)應(yīng)用開發(fā)14代碼分析if(element.hasChildNodes()for(int k=0;kr;k+)if(children.item(k).getNodeType()=Node.ELEMENT_NODE)printNode(Element)children.item(k);else if(children.item(k).getNodeType

8、()=Node.TEXT_NODE)System.out.println(children.item(k).getNodeValue(); System.out.println();使用使用XML企業(yè)應(yīng)用開發(fā)企業(yè)應(yīng)用開發(fā)實(shí)驗(yàn)一:使用DOM遍歷編寫一個Java程序,將students.xml中的所有節(jié)點(diǎn)遍歷輸出。students.xml使用使用XML企業(yè)應(yīng)用開發(fā)企業(yè)應(yīng)用開發(fā)參考代碼參考代碼:使用使用XML企業(yè)應(yīng)用開發(fā)企業(yè)應(yīng)用開發(fā)17DOM應(yīng)用:添加結(jié)點(diǎn)在元素Teams的子元素Team后添加一個新的Team元素。生成一個新的結(jié)點(diǎn)Team使用使用XML企業(yè)應(yīng)用開發(fā)企業(yè)應(yīng)用開發(fā)18在根結(jié)點(diǎn)下添加新的T

9、eam結(jié)點(diǎn)該代碼作用:利用Transformer將處理的文檔信息通過XSLT轉(zhuǎn)換返回給源文檔。如果不加該段代碼,程序?qū)π畔⒌奶幚碇槐憩F(xiàn)在內(nèi)存中,無法反映在XML文檔上。使用使用XML企業(yè)應(yīng)用開發(fā)企業(yè)應(yīng)用開發(fā)19運(yùn)行結(jié)果使用使用XML企業(yè)應(yīng)用開發(fā)企業(yè)應(yīng)用開發(fā)20DOM應(yīng)用:插入結(jié)點(diǎn)在現(xiàn)有Team元素之前插入新結(jié)點(diǎn)Team新結(jié)點(diǎn)Team使用使用XML企業(yè)應(yīng)用開發(fā)企業(yè)應(yīng)用開發(fā)21代碼分析在原有Team元素前插入一個新的Team結(jié)點(diǎn)使用使用XML企業(yè)應(yīng)用開發(fā)企業(yè)應(yīng)用開發(fā)22運(yùn)行結(jié)果使用使用XML企業(yè)應(yīng)用開發(fā)企業(yè)應(yīng)用開發(fā)23應(yīng)用:刪除結(jié)點(diǎn)將上例中第一個Team元素的Member子元素的文本子節(jié)點(diǎn)刪除使用

10、使用XML企業(yè)應(yīng)用開發(fā)企業(yè)應(yīng)用開發(fā)24運(yùn)行結(jié)果使用使用XML企業(yè)應(yīng)用開發(fā)企業(yè)應(yīng)用開發(fā)25DOM應(yīng)用:刪除結(jié)點(diǎn)將上例中第一個Team結(jié)點(diǎn)刪除使用使用XML企業(yè)應(yīng)用開發(fā)企業(yè)應(yīng)用開發(fā)26運(yùn)行結(jié)果使用使用XML企業(yè)應(yīng)用開發(fā)企業(yè)應(yīng)用開發(fā)27DOM應(yīng)用:替換結(jié)點(diǎn)創(chuàng)建一個新的結(jié)點(diǎn)Member,替換原先的Member結(jié)點(diǎn)創(chuàng)建Member結(jié)點(diǎn)結(jié)點(diǎn)替換root.getFirstChild().replaceChild(newmember,oldmember);替換使用使用XML企業(yè)應(yīng)用開發(fā)企業(yè)應(yīng)用開發(fā)28運(yùn)行結(jié)果使用使用XML企業(yè)應(yīng)用開發(fā)企業(yè)應(yīng)用開發(fā)實(shí)驗(yàn)二使用DOM操作XML新建java程序,建立如下圖的ds.x

11、ml文檔參考代碼:使用使用XML企業(yè)應(yīng)用開發(fā)企業(yè)應(yīng)用開發(fā)實(shí)驗(yàn)二使用DOM操作XML在上例ds.xml文檔中開始部分添加一條學(xué)生記錄。參考代碼:思考(思考(1)如)如何刪除張三學(xué)何刪除張三學(xué)生的信息?(生的信息?(2)如何把李)如何把李四學(xué)生性別改四學(xué)生性別改為男?為男?使用使用XML企業(yè)應(yīng)用開發(fā)企業(yè)應(yīng)用開發(fā)31DOM 特點(diǎn)-1 文檔對象模型 (Document Object Model, DOM):q是 XML 文檔的編程接口q定義如何在程序中訪問和操作 XML 文檔q是與平臺和語言無關(guān)的接口q以樹結(jié)構(gòu)表示 XML 文檔q通過提供一組對象對 XML 文檔結(jié)構(gòu)的訪問q定義用于訪問和操作 XML 文檔的 API使用使用XML企業(yè)應(yīng)用開發(fā)企業(yè)應(yīng)用開發(fā)32DOM 特點(diǎn)-2文檔對象模型 DOMXML 文檔的編程接口定義如何在程序中訪問和操作 XML 文檔與平臺和語言無關(guān)的接口使用使用XML企業(yè)應(yīng)用開發(fā)企業(yè)應(yīng)用開發(fā)33DOM 特點(diǎn)-3q 編寫一個通過 DOM 訪問 XML 文檔的應(yīng)用程序時需要:qXML 解析器qDOM實(shí)現(xiàn)q 使用 DOM 創(chuàng)建和操作 XML 文檔有助于避免:q未封閉標(biāo)簽q錯誤嵌套標(biāo)簽q 使用 DOM 能夠在數(shù)據(jù)庫和 XML 文件之間輕松移動信息使用使用XML企業(yè)應(yīng)用開發(fā)企業(yè)應(yīng)用開發(fā)34總結(jié)qDOM 是用于 XML 文檔的與平

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論