《Web編程基礎(chǔ)》課件第10章 運(yùn)用DOM處理XML_第1頁(yè)
《Web編程基礎(chǔ)》課件第10章 運(yùn)用DOM處理XML_第2頁(yè)
《Web編程基礎(chǔ)》課件第10章 運(yùn)用DOM處理XML_第3頁(yè)
《Web編程基礎(chǔ)》課件第10章 運(yùn)用DOM處理XML_第4頁(yè)
《Web編程基礎(chǔ)》課件第10章 運(yùn)用DOM處理XML_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

目標(biāo)-1-了解DOM的概念了解DOM處理XML的優(yōu)勢(shì)掌握DOM的文檔結(jié)構(gòu)了解XPath的特點(diǎn)和結(jié)構(gòu)掌握XPath的數(shù)據(jù)類型和節(jié)點(diǎn)間的關(guān)系掌握XPath表達(dá)式及應(yīng)用掌握XPath定位路徑的使用了解JDOM的概念和基本結(jié)構(gòu)掌握J(rèn)DOM的常用API掌握使用JDOM處理XML的基本步驟-2-文檔對(duì)象模型概述XMLDOM是XMLDocumentObjectModel的縮寫,即XML文檔對(duì)象模型。使用DOM處理XML有以下幾點(diǎn)優(yōu)越性:DOM能夠保證XML文檔的語(yǔ)法正確和格式正規(guī);DOM能夠從語(yǔ)法中提取內(nèi)容;DOM能夠簡(jiǎn)化內(nèi)部文檔操作;DOM能夠貼切地反映典型的層次數(shù)據(jù)庫(kù)和關(guān)系數(shù)據(jù)庫(kù)的結(jié)構(gòu).-3-DOM文檔結(jié)構(gòu)在DOM中,將XML邏輯結(jié)構(gòu)描述成樹。XML中共有12種節(jié)點(diǎn)類型,常見的節(jié)點(diǎn)類型有:文檔元素文本屬性注釋DOM對(duì)象的層次-4-XPathXPath就是一種專門用來在XML文檔中定位和查找信息的語(yǔ)言,通過XPath可對(duì)XML文檔中的元素和屬性進(jìn)行遍歷,是高級(jí)XML應(yīng)用的基礎(chǔ)。XPath主要有四種數(shù)據(jù)類型:節(jié)點(diǎn)集布爾類型字符串類型數(shù)值類型在XPath中,可以將節(jié)點(diǎn)劃分為七種節(jié)點(diǎn)類型:根節(jié)點(diǎn)(RootNode)元素節(jié)點(diǎn)(ElementNodes)文本節(jié)點(diǎn)(TextNodes)屬性節(jié)點(diǎn)(AttributeNodes)命名空間節(jié)點(diǎn)(NamespaceNodes)處理指令節(jié)點(diǎn)(ProcessingInstructionNodes)注釋節(jié)點(diǎn)(CommentNodes)-5-XPathXPath節(jié)點(diǎn)關(guān)系:父(parent)子(children)同胞(sibling)先輩(ancestor)后代(descendant)bookstore示例<?xmlversion="1.0"encoding="GB2312"?><bookstore> <book> <titlelang="en">RESTfulWebServices</title> <author>LeonardRichardson</author> <year>2007</year> <price>29.00</price> </book></bookstore>-6-XPath表達(dá)式XPath將XML文檔看作由節(jié)點(diǎn)構(gòu)成的層次樹,通過編寫XPath表達(dá)式來定位樹中特定的節(jié)點(diǎn)XPath路徑表達(dá)式:“/”代表這是絕對(duì)路徑,表示當(dāng)前文檔的根節(jié)點(diǎn)“//”則表示相對(duì)路徑,表示當(dāng)前文檔所有的節(jié)點(diǎn)表達(dá)式描述nodename選取此節(jié)點(diǎn)的所有子節(jié)點(diǎn)/從根節(jié)點(diǎn)選取//從任意節(jié)點(diǎn)選取.選取當(dāng)前節(jié)點(diǎn)..選取當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn)@選取屬性-7-XPath表達(dá)式實(shí)例講解<?xmlversion="1.0"encoding="GB2312"?><bookstore> <book> <titlelang="en">RESTfulWebServices</title> <price>29.00</price> </book> <book> <titlelang="zh">Java編程基礎(chǔ)</title> <price>46.00</price> </book></bookstore>bookstore

選取bookstore元素的所有子節(jié)點(diǎn)/bookstore選取根節(jié)點(diǎn)bookstore元素/bookstore/book/price選取bookstore元素下所有book元素的所有price元素/bookstore/book/*選取/bookstore/book的所有子元素bookstore/book選取bookstore元素下所有的book子元素//bookstore選取文檔中所有的bookstore元素,無論它在什么層次bookstore//book選取在bookstore元素下所有的book元素,無論它們位于bookstore之下的什么位置/bookstore/*/price選取bookstore的子元素中,包含有price作為子元素的元素//*選取文件中的所有元素//@lang選取所有名為lang的屬性-8-XPath表達(dá)式實(shí)例講解XPath謂語(yǔ)表達(dá)式實(shí)例

如果需要選擇一個(gè)以上的路徑,可以在XPath表達(dá)式中使用“|”運(yùn)算符路徑表達(dá)式描述/bookstore/book[last()]選取屬于bookstore子元素的最后一個(gè)book元素/bookstore/book[last()-1]選取屬于bookstore子元素的倒數(shù)第二個(gè)book元素/bookstore/book[position()<3]選取前兩個(gè)屬于bookstore元素的子元素的book元素//title[@lang]選取所有擁有名為lang的屬性的title元素//title[@lang="en"]選取所有title元素,且這些元素?fù)碛兄禐閑ng的lang屬性/bookstore/book[price>15.00]選取所有bookstore元素的book元素,且其中的price元素的值須大于15.00/bookstore/book[price>15.00]/title選取所有bookstore元素中的book元素的title元素,且其中的price元素的值須大于15.00//title[@*]選取所有帶有屬性的title元素路徑表達(dá)式描述//book/title|//book/price選取所有book元素的title和price元素//title|//price選取文檔中所有的title和price元素/bookstore/book/title|//price選取所有屬于bookstore元素的book元素的title元素,以及文檔中所有的price元素-9-XPath表達(dá)式實(shí)例講解XPath表達(dá)式的運(yùn)算符可以使用常規(guī)的算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符等,常用的運(yùn)算符:示例:10.1bookstore.xml和bookstore.html運(yùn)算符描述實(shí)例|計(jì)算兩個(gè)節(jié)點(diǎn)集//book|//cd,返回所有帶有book和cd元素的節(jié)點(diǎn)集+加法6+4,-減法6-4*乘法6*4div除法8div4=等于price=15!=不等于price!=15<小于price<15<=小于或等于price<=15>大于price>15>=大于或等于price>=15or或price=15orprice=35and與price>15orprice<35mod計(jì)算除法的余數(shù)5mod2-10-XPath定位路徑定位步驟從左到右,依次按順序計(jì)算XPath的定位步驟的語(yǔ)法如下:

其中:軸(axis),定義某個(gè)相對(duì)于當(dāng)前節(jié)點(diǎn)的節(jié)點(diǎn)集。節(jié)點(diǎn)測(cè)試(node-test),識(shí)別某個(gè)軸內(nèi)部的節(jié)點(diǎn)謂語(yǔ)(predicate),零或多個(gè)預(yù)測(cè),以更深入地提煉所選的節(jié)點(diǎn)集示例代碼:XPath定位路徑表達(dá)式將會(huì)返回一個(gè)節(jié)點(diǎn)集。定位路徑可以是絕對(duì)的或相對(duì)的

軸名::節(jié)點(diǎn)測(cè)試[謂語(yǔ)]child::price[price=9.90]-11-XPath定位路徑軸名稱描述ancestor選取當(dāng)前節(jié)點(diǎn)的所有先輩ancestor-or-self選取當(dāng)前節(jié)點(diǎn)的所有先輩以及當(dāng)前節(jié)點(diǎn)本身attribute選取當(dāng)前節(jié)點(diǎn)的所有屬性child選取當(dāng)前節(jié)點(diǎn)的所有子元素descendant選取當(dāng)前節(jié)點(diǎn)的所有后代元素descendant-or-self選取當(dāng)前節(jié)點(diǎn)的所有后代元素以及當(dāng)前節(jié)點(diǎn)本身following選取文檔中當(dāng)前節(jié)點(diǎn)的結(jié)束標(biāo)簽之后的所有節(jié)點(diǎn)namespace選取當(dāng)前節(jié)點(diǎn)的所有命名空間節(jié)點(diǎn)parent選取當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn)preceding選取文檔中當(dāng)前節(jié)點(diǎn)的開始標(biāo)簽之前的所有節(jié)點(diǎn)preceding-sibling選取當(dāng)前節(jié)點(diǎn)之前的所有同級(jí)節(jié)點(diǎn)self選取當(dāng)前節(jié)點(diǎn)XPath的軸名稱示例:表10-7和表10-8-12-XML的解析方式解析XML文檔主要有兩種方式:DOM方式

DOM是文檔驅(qū)動(dòng)的解析方式。解析器會(huì)讀入整個(gè)XML文檔,然后在內(nèi)存中構(gòu)造一棵完整的DOM樹形結(jié)構(gòu)。SAX方式

SAX(SimpleAPIforXML,XML簡(jiǎn)單API)是事件驅(qū)動(dòng)的解析方式。當(dāng)解析器發(fā)現(xiàn)元素開始、元素結(jié)束、文本、文檔的開始或結(jié)束等情況時(shí),會(huì)觸發(fā)相應(yīng)的事件,開發(fā)者可以通過編寫響應(yīng)這些事件的代碼來保存數(shù)據(jù)。-13-解析XML的APIW3CDOM使用DOM方式可以方便的操作整個(gè)XML文檔,W3C發(fā)布了針對(duì)DOM方式的一組Java接口,其中規(guī)范了以DOM方式操作XML文檔的方法。SAXSAX的API是一個(gè)社區(qū)規(guī)范。這個(gè)API中規(guī)定了以SAX方式解析XML文檔的事件和方法JAXPJAXP是SUN公司推出的一套輕量級(jí)的包裝器API,是Java操作XML的標(biāo)準(zhǔn)規(guī)范。JDOMJDOM是一個(gè)開源的XML解析類庫(kù),其提供了一種基于Java的特定文檔對(duì)象模型。DOM4JDOM4J是一個(gè)開源的XML解析類庫(kù),提供了一種基于Java的特定文檔對(duì)象模型,并且也提供對(duì)W3CDOM、SAX和JAXP的支持。-14-JAXPJAXP(JavaAPIforXMLParsing)沒有重新定義DOM和SAX,其提供一種機(jī)制可以通過即插即用接口在Java應(yīng)用程序中訪問解析器JAXP的工作方式:JAXP實(shí)例

示例10.2:JAXPDemo.java-15-JavaDOM的APIDocumentBuilderFactory類DocumentBuilder類DocumentNodeNodeListElementAttr-16-JDOM概述JDOM是一個(gè)開源的、專為Java語(yǔ)言提供XML解析功能的項(xiàng)目,基于樹型結(jié)構(gòu),利用純Java的技術(shù)對(duì)XML文檔實(shí)現(xiàn)解析、生成、序列化以及多種操作,利用Java語(yǔ)言把SAX和DOM的功能有效地結(jié)合起來JDOM結(jié)構(gòu)圖-17-JDOM的APIJDOM中的常用類主要包括:SAXBuilderDOMBuilderDocumentXMLOutPutterElementAttribute類-18-JDOM編程JDOM與DOM和SAX不同,需要訪問JDOM項(xiàng)目站點(diǎn),并下載最新版本的JDOM工具包。JDOM編程示例:創(chuàng)建XML文檔

示例:10.3JDOMCreate.java遍歷XML文檔

示例:10.4JDOMRead.java小結(jié)-19-XMLDOM是XMLDocumentObjectModel的縮寫DOM定義了訪問和處理XML文檔的標(biāo)準(zhǔn)方法在DOM中,將XML邏輯結(jié)構(gòu)描述成樹(DOM樹)XML中共有12種節(jié)點(diǎn)類型,其中最常見的節(jié)點(diǎn)類型有5種:文檔、元素、屬性、文本和注釋對(duì)XPath的理解是很多高級(jí)XML應(yīng)用的基礎(chǔ)XPath可以用于XSLT樣式表內(nèi)來定位XML樹中的某個(gè)位置XPath表達(dá)式由左至右讀取,路徑中的各個(gè)點(diǎn)由一個(gè)前向斜杠(/)分隔XPath主要有四種數(shù)據(jù)類型:節(jié)點(diǎn)集、布爾類型、數(shù)值類型、字符串XPath中,節(jié)點(diǎn)之間的關(guān)系有父、子、同胞、先輩、后代XPath使用路徑表達(dá)式在XML文檔中選取節(jié)點(diǎn),并可以使用謂語(yǔ)查找某個(gè)特定的節(jié)點(diǎn)或者包含某個(gè)值的節(jié)點(diǎn)小結(jié)-20-DOM是文檔驅(qū)動(dòng)的,不適于處理大型XML文件目前主要有四種XML解析器:DOM、SAX、J

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論