T4-JAVA程序解析XMLPPT課件_第1頁
T4-JAVA程序解析XMLPPT課件_第2頁
T4-JAVA程序解析XMLPPT課件_第3頁
T4-JAVA程序解析XMLPPT課件_第4頁
T4-JAVA程序解析XMLPPT課件_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、Java程序解析xml,回 顧,Schema概述 Schema簡(jiǎn)介 Schema優(yōu)點(diǎn) Schema的文件結(jié)構(gòu) Schema語法 schema元素 簡(jiǎn)單元素 屬性 限定屬性和元素的值 復(fù)合元素 指示器(Indicators,目 標(biāo),了解 DOM Dom中的所有操作都是通過接口來實(shí)現(xiàn) 可通過DOM來讀/寫XML 掌握 JDOM 用JDOM來解析學(xué)生信息的xml文件,XML解析器,解析器是一個(gè)軟件應(yīng)用程序,設(shè)計(jì)用于分析文檔(這里是指 XML 文件),以及做一些特定于該信息的事情。 Java中處理XML文檔的標(biāo)準(zhǔn)API有兩種,即XML的簡(jiǎn)單API(SAX,Simple API for XML)和文檔對(duì)

2、象模型(DOM, Document Object Model) 其他的API,如JDOM,dom4j等,DOM,DOM的全稱是Document Object Model,也即文檔對(duì)象模型。 基于DOM的XML分析器將一個(gè)XML文檔轉(zhuǎn)換成一個(gè)對(duì)象模型的集合(通常稱DOM樹),應(yīng)用程序正是通過對(duì)這個(gè)對(duì)象模型的操作,來實(shí)現(xiàn)對(duì)XML文檔數(shù)據(jù)的操作。 通過DOM接口,應(yīng)用程序可以在任何時(shí)候訪問XML文檔中的任何一部分?jǐn)?shù)據(jù),DOM,內(nèi)存中生成的節(jié)點(diǎn)樹,矩形框表示元素節(jié)點(diǎn) 橢圓表示文本節(jié)點(diǎn)。 DOM 使用父子關(guān)系。 samples 是根元素: 三個(gè)文本節(jié)點(diǎn)(空白), 兩個(gè)元素節(jié)點(diǎn) server 和monit

3、or。 server 和 monitor 節(jié)點(diǎn)具有 null 值, UNIX 和 color文本節(jié)點(diǎn)其作為孩子,DOM,DOM樹中最常見的節(jié)點(diǎn)類型包括: 元素節(jié)點(diǎn)(Element node):元素是 XML 的基本構(gòu)造模塊。通常,元素?fù)碛凶釉?、文本?jié)點(diǎn),或兩者的組合。元素節(jié)點(diǎn)也是能夠擁有屬性的唯一節(jié)點(diǎn)類型。 屬性節(jié)點(diǎn)(Attribute node):屬性節(jié)點(diǎn)包含關(guān)于元素節(jié)點(diǎn)的信息,代表一個(gè)屬性,但是并不實(shí)際認(rèn)為是元素的孩子,例如:12341 文本節(jié)點(diǎn)(Text node):文本節(jié)點(diǎn)就是名副其實(shí)的文本。它可以由更多信息組成,也可以只包含空白。 文檔節(jié)點(diǎn)(Document node):文檔節(jié)點(diǎn)是

4、最上層的節(jié)點(diǎn),是文檔中其他所有節(jié)點(diǎn)的父親。 CDATA、處理指令、注釋、實(shí)體、實(shí)體引用節(jié)點(diǎn)等等,DOM接口介紹,文檔對(duì)象模型利用對(duì)象來把文檔模型化,這些模型不僅描述了文檔的結(jié)構(gòu),還定義了模型中對(duì)象的行為。 在DOM中,對(duì)象模型要實(shí)現(xiàn): 用來表示、操作文檔的接口 ; 接口的行為和屬性 ; 接口之間的關(guān)系以及互操作。 在DOM接口規(guī)范中,有四個(gè)基本的接口:Document,Node,NodeList以及NamedNodeMap,DOM接口介紹-Document接口,Document接口代表了整個(gè)XML/HTML文檔,因此它是整棵樹的根,提供了對(duì)文檔中的數(shù)據(jù)進(jìn)行訪問和操作的入口 Document接口

5、有兩個(gè)作用: 表示XML文檔本身和提供對(duì)內(nèi)容、文檔類型聲明和其他屬性的訪問 他也是個(gè)抽象工廠,負(fù)責(zé)生成文檔中的節(jié)點(diǎn):元素、文本、說明、處理指令,等等。 DOM是讀寫API,不僅可以通過分析文本文件生成DOM文檔,也可以在內(nèi)存中從頭開始生成新的文檔。 生成新Document對(duì)象的抽象工廠接口是DOMImplementation. 通過節(jié)點(diǎn)的ownerDocument屬性,用來表明當(dāng)前節(jié)點(diǎn)是由誰所創(chuàng)建的以及節(jié)點(diǎn)同Document之間的聯(lián)系,DOM接口介紹-Document接口,在DOM樹中,Document接口同其他接口之間的關(guān)系如下,Document接口提供的方法(見附件中給的Document.

6、java源碼,DOM接口介紹-Node接口,在DOM樹中,Node接口代表了樹中的一個(gè)節(jié)點(diǎn)。 Note接口大致可以分為五個(gè)部分: 節(jié)點(diǎn)類型常量 設(shè)置與讀取節(jié)點(diǎn)屬性的方法 導(dǎo)航DOM樹的方法 增加與刪除子節(jié)點(diǎn)的方法 幾個(gè)實(shí)用程序方法,Note接口提供的方法(見附件中給的Note.java源碼,DOM接口介紹-Node接口,一個(gè)典型的Node接口如下圖所示,DOM接口介紹其他接口,DOM用NodeList對(duì)象存放節(jié)點(diǎn)的子節(jié)點(diǎn)列表。Node接口的getChildNodes()方法返回這個(gè)接口的實(shí)例。 實(shí)現(xiàn)了NamedNodeMap接口的對(duì)象中包含了可以通過名字來訪問的一組節(jié)點(diǎn)的集合。 NamedNo

7、deMap并不是從NodeList繼承過來的,它所包含的節(jié)點(diǎn)集中的節(jié)點(diǎn)是無序的。 NamedNodeMap表示的是一組節(jié)點(diǎn)和其唯一名字的一一對(duì)應(yīng)關(guān)系,這個(gè)接口主要用在屬性節(jié)點(diǎn)的表示上。 Element接口是DOM組成接口中最重要的,定義XML文檔結(jié)構(gòu)的是元素而不是任何其他組建。 Element接口包含的方法可以取得元素前綴名、操縱元素屬性和選擇元素后代,DOM讀/寫XML文檔,為了使用 XML 文件中的信息,必須解析文件以創(chuàng)建一個(gè) Document 對(duì)象。 Document 對(duì)象是一個(gè)接口,因而不能直接將它實(shí)例化;一般情況下,應(yīng)用程序會(huì)相應(yīng)使用一個(gè)工廠。準(zhǔn)確的過程因?qū)崿F(xiàn)而異,但是基本思想是相同

8、的。 Java 環(huán)境中,解析文件是一個(gè)三步過程: 創(chuàng)建 DocumentBuilderFactory;DocumentBuilderFactory 對(duì)象創(chuàng)建 DocumentBuilder。 創(chuàng)建 DocumentBuilder;DocumentBuilder 執(zhí)行實(shí)際的解析以創(chuàng)建 Document 對(duì)象。 解析文件以創(chuàng)建 Document 對(duì)象,DOM生成XML文檔,將xml 中的數(shù)據(jù)讀取到dom中的java程序例子: 1、導(dǎo)入需要的類文件 2、聲明一個(gè)Document對(duì)象 3、處理異常 4、創(chuàng)建一個(gè)DocumentBuilderFactory 5、得到解析器并解析XML文件,createX

9、ML.java,DOM解析XML文檔-解析器設(shè)置,Java的DOM 2 實(shí)現(xiàn)允許通過以下方法控制解析器的參數(shù): setCoalescing():決定解析器是否要將 CDATA 節(jié)點(diǎn)轉(zhuǎn)換為文本,以及是否 要和周圍的文本節(jié)點(diǎn)合并。其默認(rèn)值為 false。 setExpandEntityReferences(): 確定是否要展開外部實(shí)體引用。如果為 true,外部數(shù)據(jù)將插入文檔。其默認(rèn)值為 true。 setIgnoringComments():確定是否要忽略文件中的注釋。其默認(rèn)值為 false。 setIgnoringElementContentWhitespace():確定是否要忽略元素內(nèi)容中的

10、空白。其默認(rèn)值為 false。 setNamespaceAware():確定解析器是否要注意名稱空間信息。其默認(rèn)值為 false。 setValidating():默認(rèn)情況下,解析器不驗(yàn)證文檔。將這個(gè)參數(shù)設(shè)置為 true 可打開驗(yàn)證功能,DOM解析XML文檔,獲取根元素 一旦解析了文檔并創(chuàng)建了一個(gè) Document,應(yīng)用程序就能單步調(diào)試該結(jié)構(gòu)以審核、查找或顯示信息。這種導(dǎo)航功能是將要在 Document 上執(zhí)行的許多操作的基礎(chǔ)。 格式良好的文檔僅有一個(gè)根元素,也稱為 DocumentElement。 通過.getDocumentElement()方法來得到根元素,DOM解析XML文檔,獲取節(jié)點(diǎn)

11、的孩子 一旦應(yīng)用程序確定了根元素,它就把根元素的孩子的列表作為一個(gè) NodeList 來檢索。NodeList 類是一系列的項(xiàng),應(yīng)用程序?qū)⒅饌€(gè)迭代這些項(xiàng)。 NodeList getChildNodes(,DOM解析XML文檔,得到節(jié)點(diǎn)的第一個(gè)孩子 Node getFirstChild() 得到節(jié)點(diǎn)的下一個(gè)兄弟 Node getNextSibling() 更改節(jié)點(diǎn)的值 通過setNodeValue(String)方法實(shí)現(xiàn)對(duì)元素的文本內(nèi)容值的修改,DOM解析XML文檔,ParseXMLDemo1.java /ParseXMLDemo2.java,JDOM簡(jiǎn)介,JDOM是java document

12、object model的簡(jiǎn)稱,JDOM兼顧了DOM和SAX的優(yōu)點(diǎn),它會(huì)提供適配器用來選擇具體的XML解析器。 JDOM是一個(gè)源代碼開發(fā)的項(xiàng)目,它基于樹型結(jié)構(gòu),利用純Java的技術(shù)對(duì)XML文件實(shí)現(xiàn)解析、生成、序列化以及多種操作。 ,JDOM簡(jiǎn)介,在 JDOM 中,XML 元素就是 Element 的實(shí)例,XML 屬性就是 Attribute 的實(shí)例,XML 文檔本身就是 Document 的實(shí)例。 因此創(chuàng)建一個(gè)新 JDOM 對(duì)象就如在 Java 語言中使用 new 操作符一樣容易。 JDOM 使用標(biāo)準(zhǔn)的 Java 編碼模式。只要有可能,它使用 Java ne

13、w 操作符而不故弄玄虛使用復(fù)雜的工廠化模式,使對(duì)象操作即便對(duì)于初學(xué)用戶也很方便,JDOM簡(jiǎn)介,JDOM與DOM相比,主要有以下兩個(gè)優(yōu)勢(shì): JDOM僅使用具體類而不使用接口,這就在某些方面簡(jiǎn)化了API,但是也限制了靈活性; API使用了很多Collections類,使得熟悉這些類的Java開發(fā)人員使用起來更加得心應(yīng)手,JDOM的組成,JDOM是由以下幾個(gè)包組成的 org.jdom.* : 包含了所有的xml文檔要素的java類 org.jdom.adapters.*: 包含了與dom適配的java類 org.jdom.filter.*: 包含了xml文檔的過濾器類 org.jdom.input.

14、*: 包含了讀取xml文檔的類 org.jdom.output.* : 包含了寫入xml文檔的類 org.jdom.transform.*: 包含了將jdom xml文檔接口轉(zhuǎn)換為其他xml文檔接口 org.jdom.xpath.*: 包含了對(duì)xml文檔xpath操作的類,JDom的具體使用,通過JDom創(chuàng)建一個(gè)xml文件 步驟: 1、創(chuàng)建根元素 2、根據(jù)根元素創(chuàng)建文檔 3、給根元素添加屬性 4、添加元素或子元素 5、刪除元素 6、將JDOM對(duì)象轉(zhuǎn)換為xml文件,JDom的具體使用,創(chuàng)建文檔 由于所有的文檔都有根元素,所以我們可以先建立一個(gè)根元素,然后通過這個(gè)元素來創(chuàng)建一個(gè)XML文檔。 創(chuàng)建根

15、元素 根據(jù)根元素創(chuàng)建文檔 給根元素添加屬性 上面的操作也可以用下面任何一句代替,JDom的具體使用,添加元素和子元 在JDOM中子元素是作為 content(內(nèi)容)添加到父元素里面去的,通過調(diào)用addContent(element)方法實(shí)現(xiàn)。而元素的文本內(nèi)容通過setText(String)方法來創(chuàng)建。 那么上面的XML中子元素的創(chuàng)建過程為,JDom的具體使用,許多元素還包含子元素、說明、處理指令和其他內(nèi)容,這些也可通過addContent()方法添加內(nèi)容,空白符在XML中很重要,所以在JDOM如果要得到縮排整齊的元素,也應(yīng)該增加相應(yīng)的空白符的字符串。如下面例子的實(shí)現(xiàn),JDom的具體使用,將JDOM轉(zhuǎn)化為XML文本 org.jdom.output.XMLOutputter類負(fù)責(zé)將JDOM對(duì)象以流的形式輸出。 該類中提供了三種不同的構(gòu)造函數(shù): XMLOutputter():使用默認(rèn)的格式輸出。 XMLOutputter(Format format):根據(jù)用戶制定的格式輸出。 XMLOutputter(XMLOutputter that):根據(jù)給的XMLOutpu

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論