![第八章java對(duì)XML的解析_第1頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-10/12/70fbe258-e45d-4ea5-97c6-fe6fe5bb53fc/70fbe258-e45d-4ea5-97c6-fe6fe5bb53fc1.gif)
![第八章java對(duì)XML的解析_第2頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-10/12/70fbe258-e45d-4ea5-97c6-fe6fe5bb53fc/70fbe258-e45d-4ea5-97c6-fe6fe5bb53fc2.gif)
![第八章java對(duì)XML的解析_第3頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-10/12/70fbe258-e45d-4ea5-97c6-fe6fe5bb53fc/70fbe258-e45d-4ea5-97c6-fe6fe5bb53fc3.gif)
![第八章java對(duì)XML的解析_第4頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-10/12/70fbe258-e45d-4ea5-97c6-fe6fe5bb53fc/70fbe258-e45d-4ea5-97c6-fe6fe5bb53fc4.gif)
![第八章java對(duì)XML的解析_第5頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-10/12/70fbe258-e45d-4ea5-97c6-fe6fe5bb53fc/70fbe258-e45d-4ea5-97c6-fe6fe5bb53fc5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、xml是擴(kuò)展性標(biāo)識(shí)語(yǔ)言的簡(jiǎn)寫特點(diǎn):自定義標(biāo)簽作用:一種通用數(shù)據(jù)交換格式,系統(tǒng)配置文件一般采用xml格式書寫,用來記錄應(yīng)用程序的配置信息。優(yōu)點(diǎn): 結(jié)構(gòu)嚴(yán)謹(jǐn)規(guī)范性強(qiáng) 標(biāo)準(zhǔn)的數(shù)據(jù)交換文件,已用于通用的配置信息文件 結(jié)構(gòu)簡(jiǎn)單,清晰,便于書寫,增強(qiáng)閱讀性 將數(shù)據(jù)結(jié)構(gòu)化,讓數(shù)據(jù)間具有明確的層次關(guān)系語(yǔ)言標(biāo)記 html標(biāo)記是固定標(biāo)記集合 xml提供的是一個(gè)定義標(biāo)記的標(biāo)準(zhǔn),其中的標(biāo)記是可以自由定義代碼的書寫 html語(yǔ)言編寫相對(duì)隨意,要求松散。 xml語(yǔ)言編寫有非常嚴(yán)格的規(guī)范描述內(nèi)容 html將數(shù)據(jù)和顯示結(jié)合在一起 xml將數(shù)據(jù)和顯示相分離,記錄數(shù)據(jù)和數(shù)據(jù)間關(guān)系,只對(duì)數(shù)據(jù)進(jìn)行描述,不考慮顯示效果。張三20李四2
2、3 xml聲明(declaration)doctype聲明處理指令(processing instruction)注釋(comment)元素(element)cdata并不是每一個(gè)xml都需要所有的組成部分。文檔聲明( xml文檔首行): 格式: encoding定義文檔字符編碼集合,“gb2312” standalone定義文檔是否獨(dú)立,“yes”no”文檔類型定義: 指定xml文檔定義文檔類型所用的dtd來源處理指令 為處理xml文檔的應(yīng)用程序提供提示信息, 文檔注釋 注釋不可以嵌套文檔主體內(nèi)容自定義標(biāo)記對(duì)數(shù)據(jù)進(jìn)行結(jié)構(gòu)描述,通過樹形結(jié)構(gòu)體現(xiàn)文檔結(jié)構(gòu) 文檔中只能有一個(gè)頂層元素(根元素) 頂層
3、元素中包含: 元素屬性 元素文本內(nèi)容 cdata(character data字符數(shù)據(jù)區(qū)) 各種子元素1.所有xml標(biāo)記都嚴(yán)格區(qū)分大小寫2.xml只能有一個(gè)頂層元素,其他元素都包含在頂層元素中3.所有的標(biāo)記都必須要要有開始和結(jié)束標(biāo)簽,如果沒有單獨(dú)的結(jié)束標(biāo)簽,則在開始標(biāo)簽的內(nèi)部直接添加結(jié)束“/”4.所有標(biāo)記的屬性值必須用“ ”或 括起來5.名字中可以包含字母、數(shù)字及一些可見字符和中文6.名字不以數(shù)字和下劃線開頭,不以“xml”開頭,7.名稱中不可以包含空格,冒號(hào)(:)8.命名盡量簡(jiǎn)短,一個(gè)文件中大小寫盡量統(tǒng)一標(biāo)準(zhǔn)9.所有的xml標(biāo)記都必須合理嵌套,不允許出現(xiàn)交叉嵌套存放不想被解析的原始數(shù)據(jù)格式:
4、中示例:!cdataif( 2 在元素的文本中有些符號(hào)不可以直接出現(xiàn),因?yàn)闀?huì)出現(xiàn)解析錯(cuò)誤。比如:“”對(duì)于這些符號(hào)可以使用轉(zhuǎn)義字符來標(biāo)識(shí)特殊字符轉(zhuǎn)義字符&>“"'什么是約束模式? 定義:定義xml文檔中允許出現(xiàn)的元素名,元素中的屬性,元素中的內(nèi)容類型及元素間的嵌套關(guān)系和出現(xiàn)順序,為文檔指定xml約束模式后,就必須遵循該約束模式。xml約束模式語(yǔ)言: 用作xml約束模式的內(nèi)容也需要遵循一定的語(yǔ)法規(guī)則,這些規(guī)則形成xml約束模式語(yǔ)言,像這種創(chuàng)造xml標(biāo)記語(yǔ)言的語(yǔ)言稱為元語(yǔ)言。模式文檔:定義約束模式的文檔實(shí)例文檔:根據(jù)模式文檔編寫的文檔常見的約束模式文件:dtd、xm
5、lschema文檔類型定義(dtd)可定義合法的xml文檔構(gòu)建模塊。它使用一系列合法的元素來定義文檔的結(jié)構(gòu)。dtd文件的好處: 讓每一個(gè) xml 文件都可以具備單獨(dú)的格式描述。 也可以讓一個(gè)組織都使用同一種格式描述。 還可以直接引用一個(gè)權(quán)威機(jī)構(gòu)指定的格式描述。定義一個(gè)元素 格式: pcdata(parsed character data)(被解析的字符數(shù)據(jù))如何給xml文檔加上約束呢? 將dtd約束直接嵌套在xml文檔中。 格式: 引入外部的dtd文件到xml文檔中 !doctype students !doctype students mikemike2929bjbj 文檔類型名稱:可以自定
6、義,通常使用根節(jié)點(diǎn)名稱 system:表明xml遵循的是一個(gè)組織內(nèi)部的約束。 示例: public:表示xml遵循的是權(quán)威機(jī)構(gòu)或特定行業(yè)提供的dtd文件。 dtd名稱:用于標(biāo)識(shí)該dtd文件,只有在public聲明時(shí)才用到。元素是 xml 文檔的基本組成部分,在 xml 文檔中使用的每個(gè)元素及其屬性都要在 dtd 文件中進(jìn)行定義語(yǔ)法格式: 示例: 元素的使用規(guī)則定義了: 元素中包含的組成部分 每種組成部分出現(xiàn)的次數(shù) 各組成部分間的次序(#pcdata)表示元素中嵌套的內(nèi)容是普通文本字符串。empty:元素中不包含任何子元素和普通文本字符串,這種情況用于定義 xml 文件中的空元素:例如,定義的元
7、素形式為 +一次或多次 (書+)?0 次或一次 (書?)*0次或多次(書*)不使用規(guī)則只一次(書)每條元素定義語(yǔ)句的順序是無關(guān)緊要的 具有不同用途的元素不能使用相同的元素名 在元素的使用規(guī)則中可以通過正則表達(dá)式定義子元素出現(xiàn)的次數(shù): 圓括號(hào)可將括在其中的內(nèi)容組合成一個(gè)可統(tǒng)一操作的分組,分組中可以嵌套更小的分組。元素的各個(gè)組成成份的特點(diǎn) 元素的使用規(guī)則中的各個(gè)組成成分用空白符分隔,他們的出現(xiàn)順序沒有嚴(yán)格要求:? 用逗號(hào)分隔,出現(xiàn)順序必須與排列順序一致: 用豎杠 | 分隔,它們?cè)?xml 文檔中只能出現(xiàn)它們之中的任何一個(gè): 語(yǔ)法格式:語(yǔ)法格式:示例:示例: #required:必須設(shè)置該屬性 #i
8、mplied:可以設(shè)置也可以不設(shè)置 #fixed:說明該屬性的取值固定為一個(gè)默認(rèn)值,屬性類型 cdata:指的是純文本,即由字符、符號(hào)組成的字符串enumerated:屬性也可以被描述為一組可接受的取值的列表,xml文件中對(duì)屬性的賦值將從這個(gè)列表中選取一個(gè)值。這類屬性屬于枚舉類型enumerated,不過關(guān)鍵字enumerated是不出現(xiàn)在dtd定義中的。id:是用屬性值的方式為文件中的某個(gè)元素定義唯一標(biāo)識(shí)的方法,由處理文件的程序或腳本語(yǔ)言使用。 entity:將多內(nèi)容文本或者一個(gè)文件用一個(gè)簡(jiǎn)稱來標(biāo)識(shí)。?xml version = 1.0 encoding=gb2312 standalone=
9、yes?!doctype students !doctype students !attlist student sex ( male | female ) male“ lisilisi預(yù)覽結(jié)果:學(xué)生元素的id屬性會(huì)自動(dòng)加載male值。xml解析器是讀取xml文檔并分析其結(jié)構(gòu)的代碼。一般而言使用解析器需要以下步驟: 創(chuàng)建一個(gè)解析器對(duì)象 使解析器指向您的xml文檔 處理結(jié)果常見的解析模式 dom(document object model) 文檔對(duì)象模型,w3c的標(biāo)準(zhǔn),dom處理xml文檔是基于將xml文檔解析成樹狀模型,放入內(nèi)存進(jìn)行處理 sax(simple api for xml) sax則
10、是采用基于事件驅(qū)動(dòng)的處理模式,它將xml文檔轉(zhuǎn)化成一系列的事件,由單獨(dú)的事件處理器來決定如何處理 jdom基于java語(yǔ)言的解析工具。 jaxp(java api for xml processing) sun推出的一套處理xml文檔的工具包。dom4j 基于java語(yǔ)言的優(yōu)秀的xml文檔解析工具,也應(yīng)用在jaxm(java api for xml messaging )中。 dom: java 讀入 xml 文檔并分析其結(jié)構(gòu),將其轉(zhuǎn)化為內(nèi)存中的對(duì)象如果xml看成一顆數(shù)據(jù)樹,那么dom就是對(duì)這顆樹的一個(gè)對(duì)象描敘,是為xml文檔在邏輯上建立一個(gè)樹,樹的節(jié)點(diǎn)是一個(gè)個(gè)對(duì)象,通過存取這些對(duì)象就能夠存取
11、xml文檔的內(nèi)容。解析的過程:節(jié)點(diǎn):xml文檔中的所有節(jié)點(diǎn)組成了一個(gè)節(jié)點(diǎn)樹。xml文檔中的每個(gè)元素、屬性、文本等都代表著樹中的一個(gè)節(jié)點(diǎn)。樹起始于文檔節(jié)點(diǎn),并由此繼續(xù)伸出枝條,直到處于這棵樹最低級(jí)別的所有文本節(jié)點(diǎn)為止。常用節(jié)點(diǎn)類型如下表所示:節(jié)點(diǎn)類型附加說明實(shí)例元素節(jié)點(diǎn)(element)xml標(biāo)記元素屬性節(jié)點(diǎn)(attribute)xml標(biāo)記元素的屬性name=”ntcsoft”文本節(jié)點(diǎn)(text)xml標(biāo)記中的文本段jim文檔類型節(jié)點(diǎn)文檔類型聲明(documenttype)!doctype注釋節(jié)點(diǎn)commentxm注釋節(jié)點(diǎn)!文檔注釋節(jié)點(diǎn)關(guān)系:下面我們從一個(gè)xml文檔實(shí)例中了解一下各個(gè)節(jié)點(diǎn)之間的關(guān)
12、系: 工程師a 文檔根元素節(jié)點(diǎn)元素節(jié)點(diǎn)元素節(jié)點(diǎn)元素節(jié)點(diǎn)屬性節(jié)點(diǎn)name文本節(jié)點(diǎn)工程師a屬性節(jié)點(diǎn)position屬性節(jié)點(diǎn)name根節(jié)點(diǎn)父到子子到父下一節(jié)點(diǎn)上一節(jié)點(diǎn)firstchildlastchild通過上面的xml文檔,我們構(gòu)建出如下樹狀文檔對(duì)象模型,如下圖所示屬性屬性描述描述nodename結(jié)點(diǎn)名稱nodevalue結(jié)點(diǎn)內(nèi)部值,通常只應(yīng)用于文本結(jié)點(diǎn)nodetype節(jié)點(diǎn)類型對(duì)應(yīng)的數(shù)字parentnode如果存在,指向當(dāng)前結(jié)點(diǎn)的父親結(jié)點(diǎn)childnodes子結(jié)點(diǎn)列表firstchild如果存在,指向當(dāng)前元素的第一個(gè)子結(jié)點(diǎn)lastchild如果存在,指向當(dāng)前元素的最后一個(gè)子結(jié)點(diǎn)previoussi
13、bling指向當(dāng)前結(jié)點(diǎn)的前一個(gè)兄弟結(jié)點(diǎn)nextsibling指向當(dāng)前結(jié)點(diǎn)的后一個(gè)兄弟結(jié)點(diǎn)attributes元素的屬性列表節(jié)點(diǎn)編號(hào):節(jié)點(diǎn)編號(hào):節(jié)點(diǎn)名稱:節(jié)點(diǎn)名稱:1element2attribute3text4cdata section5entity reference6entity7processing instrucion8comment9document10document type11document fragment12notation注釋xml 文件只有載入內(nèi)存才能被操作,對(duì)于xml文件,載入內(nèi)存之后成為document 對(duì)象載入文檔的過程如下: 實(shí)例化 javax.xml.par
14、sers.documentbuilderfactory,并通過 documentbuilderfactory實(shí)例化 javax.xml.parsers.documentbuilder對(duì)象: documentbuilderfactory dbf =documentbuilderfactory.newinstance(); documentbuilder db = dbf.newdocumentbuilder(); 通過 documentbuilder 的 parse(string)方法傳入文件路徑,載入文檔,并返回由文檔在內(nèi)存生成的 文件樹document對(duì)象: document doc = d
15、b.parse(流);使用 document 對(duì)象獲取xml文檔的根節(jié)點(diǎn)rootelement el = doc.getdocumentelement();element el = doc.getdocumentelement();org.w3c.dom.document:表示整個(gè) xml 文檔;同時(shí)也是 node 的子接口,除了擁有node 的功能以外,還提供了面向整個(gè)文檔一些特殊操作,如創(chuàng)建節(jié)點(diǎn)、獲取某個(gè)名稱的節(jié)點(diǎn)等document常見方法: element getdocumentelement():獲取文檔根節(jié)點(diǎn);實(shí)際上,該方法的應(yīng)用等價(jià)于: node document.getfirst
16、child() 返回類型不同,不過可以將返回的 node 強(qiáng)制轉(zhuǎn)換為element 類型(element 是 node 的子接口)利用 node 讀取數(shù)據(jù) org.w3c.dom.node:是 xml 中所有 api 的父接口,element,text等都是它的子類,提供了對(duì)節(jié)點(diǎn)的基本操作,如獲取節(jié)點(diǎn)信息、獲取子節(jié)點(diǎn)、添加節(jié)點(diǎn)等,這些操作可以通過 node 對(duì)象的各個(gè) api 來實(shí)現(xiàn)常見的 方法: nodelist getchildnodes():以 nodelist 形式存放當(dāng)前節(jié)點(diǎn)的子節(jié)點(diǎn),若無,則返回空集合 node getfirstchild():以 node 形式返回當(dāng)前節(jié)點(diǎn)的第一個(gè)
17、子節(jié)點(diǎn),若無,則返回 null node getlastchild():以 node 形式返回當(dāng)前節(jié)點(diǎn)的最后一個(gè)子節(jié)點(diǎn),若無,則返回null node getnextsibling():以 node 形式返回當(dāng)前節(jié)點(diǎn)的下一個(gè)兄弟節(jié)點(diǎn),若無,則返回null node getprevioussibling:以 node 形式返回當(dāng)前節(jié)點(diǎn)的下一個(gè)兄弟節(jié)點(diǎn),若無,則返回 null node getparentnode():以 node 形式返回當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn),若無,則返回 null string getnodename():得到節(jié)點(diǎn)名稱 string gettextcontent():得到節(jié)點(diǎn)中的文
18、本內(nèi)容 boolean haschildnodes():返回當(dāng)前節(jié)點(diǎn)是否存在子節(jié)點(diǎn) short nodetype:獲取節(jié)點(diǎn)類型,節(jié)點(diǎn)類型見前圖 nodelist getelementsbytagname(string name):輸入標(biāo)簽名稱,以 nodelist 形式返回 指定標(biāo)記的元素,若無,則返回空集合;該方法適用于文檔中的所有元素,不需確定該元素的位置org.w3c.dom.element:在 dom 中,使用最多的不是普通文本,也不是注釋,而是一些標(biāo)簽,它們含有屬性,可能含有子標(biāo)簽element特有的 api: string getattribute(string name):通過屬
19、性名稱獲得屬性值 nodelist getelementsbytagname(string name):輸入標(biāo)簽名稱,以 nodelist 形式返回 string gettagname():得到元素的名稱 boolean hasattribute(string name):判斷該元素是否存在某個(gè)名稱的屬性建立xml文件文件,在其中放置數(shù)據(jù)庫(kù)連接需要的數(shù)據(jù),然后建立jsp文件和servlet文件,對(duì)xml文件中的數(shù)據(jù)進(jìn)行解析及顯示。最常見的 api 包括以下幾個(gè): void settextcontent(string textcontent):設(shè)置此節(jié)點(diǎn)的文本內(nèi)容 node removechild(node oldchild):從子節(jié)點(diǎn)列表中移除oldchild所指示的子節(jié)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 產(chǎn)權(quán)交易合同意向書
- 個(gè)人綜合授信貸款合同范文
- 個(gè)人房屋租賃合同樣本范本
- 個(gè)人房產(chǎn)轉(zhuǎn)讓合同樣本修訂版
- 中小學(xué)教師工資集體合同范本
- 業(yè)務(wù)員委托合同范本
- 個(gè)人小額信貸合同樣本
- 個(gè)人設(shè)備租賃標(biāo)準(zhǔn)合同
- 個(gè)人車輛保險(xiǎn)合同標(biāo)準(zhǔn)模板
- 個(gè)人友情借款合同樣本
- 神經(jīng)外科課件:神經(jīng)外科急重癥
- 頸復(fù)康腰痛寧產(chǎn)品知識(shí)課件
- 2024年低壓電工證理論考試題庫(kù)及答案
- 微電網(wǎng)市場(chǎng)調(diào)查研究報(bào)告
- 《民航服務(wù)溝通技巧》教案第14課民航服務(wù)人員上行溝通的技巧
- MT/T 538-1996煤鉆桿
- 小學(xué)六年級(jí)語(yǔ)文閱讀理解100篇(及答案)
- CB/T 467-1995法蘭青銅閘閥
- 氣功修煉十奧妙
- 勾股定理的歷史與證明課件
- 中醫(yī)診斷學(xué)八綱辨證課件
評(píng)論
0/150
提交評(píng)論