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

下載本文檔

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

文檔簡介

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

如果需要選擇一個以上的路徑,可以在XPath表達式中使用“|”運算符路徑表達式描述/bookstore/book[last()]選取屬于bookstore子元素的最后一個book元素/bookstore/book[last()-1]選取屬于bookstore子元素的倒數(shù)第二個book元素/bookstore/book[position()<3]選取前兩個屬于bookstore元素的子元素的book元素//title[@lang]選取所有擁有名為lang的屬性的title元素//title[@lang="en"]選取所有title元素,且這些元素擁有值為eng的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元素路徑表達式描述//book/title|//book/price選取所有book元素的title和price元素//title|//price選取文檔中所有的title和price元素/bookstore/book/title|//price選取所有屬于bookstore元素的book元素的title元素,以及文檔中所有的price元素-9-XPath表達式實例講解XPath表達式的運算符可以使用常規(guī)的算術(shù)運算符、關(guān)系運算符、邏輯運算符等,常用的運算符:示例:10.1bookstore.xml和bookstore.html運算符描述實例|計算兩個節(jié)點集//book|//cd,返回所有帶有book和cd元素的節(jié)點集+加法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計算除法的余數(shù)5mod2-10-XPath定位路徑定位步驟從左到右,依次按順序計算XPath的定位步驟的語法如下:

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

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

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

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

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

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

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

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論