筆記Java相關(guān)課程系列之五_第1頁
筆記Java相關(guān)課程系列之五_第2頁
筆記Java相關(guān)課程系列之五_第3頁
筆記Java相關(guān)課程系列之五_第4頁
筆記Java相關(guān)課程系列之五_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

目一、XML基本語 XML介 XML元 XML屬 實(shí)體 DTD元 DTD元素:空元 DTD元素:含有 DTD元素:總 DTD中元素的屬 DTD命名空間介 二、Schema簡(jiǎn) Schema的作 Schema文件的擴(kuò)展名 三、Java解析 Java與XML共同 Java解析XML有兩種方 DOM解 SAX解 案例:使用DOM4J包的API解析xml文 案例:使用DOM4J包的API寫入xml文 四、XPath語 XPath基本介 使用XPath的好 XPath基本語 DOM4J對(duì)XPath的支 五、附db_info.xml文 一、XML基本語法XML介紹Language2)XML是獨(dú)立于軟件和硬件的信息傳輸工具。.xmlXML可以描繪樹狀結(jié)構(gòu)的數(shù)據(jù)。因?yàn)檫@個(gè)特點(diǎn),除了傳輸數(shù)據(jù)外,時(shí)候我們使XML作為配置文件。XML是一種標(biāo)記語言,很類似HTML立于1994年的組織,其是通過促進(jìn)通用協(xié)議的發(fā)展并確保其通用型,以激發(fā)web世界XML元素XML文檔包含XML例如:XML例如:XML文件內(nèi)容都是 XML屬性XML元素可以在開始中包含屬(即屬性是中定義的屬XML屬性的屬性值必須使用引號(hào),單引號(hào)‘’或雙引號(hào)“”都可以!如果屬性值本例如:例如:oracleuser="chang的'連接實(shí)體<>&;'"XML中有特殊含義的字CDATAxmlXML敏感的字符,而我們又不希望逐一的對(duì)CDATA段是最理想的。語法格式:CDATA[忽略檢查的文本]><script<scriptfunction }]]xmlxml文件格式xml文件要有相同的元素嵌套關(guān)系、相同的屬性定義、相同的元素順序、元素出如下為兩份相同數(shù)據(jù),但是結(jié)構(gòu)不同的xmlDTD元在一個(gè)DTD中,元素通過元素來進(jìn)行(用于和約束元素DTD元素語法<!ELEMENT元素名(元素內(nèi)容<!ELEMENTDTD元素:空元例如:<!ELEMENTpage例如:<!ELEMENTpageDTD元素:含有例如:<!ELEMENTpage例如:<!ELEMENTpage這時(shí)候page中只能出現(xiàn)文本內(nèi)容,但要注意,該文本內(nèi)容是需要檢查的,就是說不能出現(xiàn)XML敏感字符。[DTD元素:帶有子元素(子元素列表)的元語法:<!ELEMENT(1,例如:<!ELEMENTjdbc<!ELEMENToracle<!ELEMENTmysql 表示有一個(gè)叫jdbc的它其中只能包含兩個(gè)分別是oracle和mysql,例如:<!ELEMENTjdbc<!ELEMENToracle<!ELEMENTmysql注意事項(xiàng):jdbc中oracle和mysql的出現(xiàn)順序必須與jdbc的元素的順序一DTD元素:只出現(xiàn)一次的元語法:<!ELEMENT(子元素名稱例如:<!ELEMENTpage上 例如:<!ELEMENTpageDTD元素:可多次出現(xiàn)的元?0-*0-+1-例如:<!ELEMENTjdbc沒用量詞,則子元素必須出現(xiàn)且1次,且出現(xiàn)順序必須與的元素的順DTD元素:子元素只能是其中之一的情例如例如 <!ELEMENTman<!ELEMENTwoman對(duì)應(yīng) “” DTD元素:子元素可以是元素也可以是文例如 定 例如 DTD元素:總(en1|en2|值為唯一的值為另外一個(gè)元素的ID值為合法的XML值為合法的XML值是一個(gè)預(yù)定義的XMLDTD中元素的屬<oracle></oracle><!--<oracleuser="user"></oracle><!--例如:例如:<!ELEMENTpackage屬性類型en1en2…屬性值的約束DTD命名空間介紹(aeSpaceXL命名空間的目的是有效的區(qū)分來自不同DTDxml文件中使用<type>coffee二、Schema簡(jiǎn)介Schema的作用因?yàn)镈TD無法解決命名問題,所以出現(xiàn)了Schema,它是DTD的替代者。DTDSchemaXMLSchema:W3C一套用于約束XML元素的標(biāo)準(zhǔn),支持命名空間,和DTD的作用一致。DTD因?yàn)槎x語法相對(duì),且不是標(biāo)準(zhǔn)的XML形式去描述定義的。而Schema本Schema文件的擴(kuò)展名XMLSchemaDifinition(簡(jiǎn)稱XSDW3C標(biāo)準(zhǔn)三、JavaJavaXML共同點(diǎn)JavaXML的解析比其他語言更完善(JavaXML最好的語言。JavaXML有兩種方式1)DOM:文本對(duì)象模型(ObjectModel)2)SAXxmlAPI(SimpleAPIForXML)SAX進(jìn)行解析。例如androidSAXxml文件的工具的。AndroidPull解析。JDOM/DOM4J2種解析XMLAPIDOM解析XML是以樹狀結(jié)構(gòu)進(jìn)行解析的。DOM在解析XMLxml內(nèi)容解析Element(元素)描繪每個(gè)節(jié)點(diǎn)和嵌套關(guān)系,并載入內(nèi)存。xml文件在內(nèi)存中構(gòu)造樹型結(jié)構(gòu),可以遍歷和修改節(jié)點(diǎn),因?yàn)樗拦?jié)點(diǎn)SAX解析案例:使用DOM4J包的API解析xml文件我們使用DOM工具,來自DOM4JxmlDOM工具,還有一種JDOM,解析步驟:創(chuàng)建用于解析Xml文件的器第2步的方返回一個(gè)對(duì)象,描述整個(gè)文檔,通過該文檔對(duì)象獲取根step1DBinfo類,其中屬性有privateStringusername;//數(shù)據(jù)庫用戶名privateStringdbName;//數(shù)據(jù)庫連接名privateStringpassword;//數(shù)據(jù)庫privateStringattUser;//數(shù)據(jù)庫/**/**定義常量,用于描述當(dāng)前解析的XML中出現(xiàn)的 名*/privatestaticfinalStringELEMENT_JDBC="jdbc";privatestaticfinalStringELEMENT_ORACLE="oracle";privatestaticfinalStringELEMENT_MYSQL="mysql";privatestaticfinalStringELEMENT_URL="url";privatestaticfinalStringprivatestaticfinalStringELEMENT_USERNAME="username";privatestaticfinalStringELEMENT_PASSWORD="password";privatestaticfinalStringATTRIBUTE_USER="user";/**xmlToDBInfo:解析xml*/publicstaticList<DBInfo>xmlToDBInfo(InputStreaminput){/**InputStreaminput說明:因?yàn)槲覀円褂肈OMXML文件,那么一序中都是通過輸入流的形式的。*///1dom4j需要導(dǎo)包:dom4j-1.6.1.jarSAXReaderreader=newSAXReader();/**xmlfalsetrue ,驗(yàn)證DTD。//2; }catch(Exception thrownewRuntimeException("數(shù) //3/**root.getName()用于獲取當(dāng)前 的名字,這里應(yīng)該是jdbc*/Elementroot= //4/**root.elements();該方法獲取rootroot.elements(Stringname);*/List<Element>childList=root.elements();/**oraclemysqlDBInfo對(duì)象中,再將這些對(duì)象存入一個(gè)集合并返回,最終完成解析工作。*/List<DBInfo>infos=newArrayList<DBInfo>();for(Elementchild:childList){//將oracle或 DBInfo return privatestaticDBInfotoDBInfo(Elementelement){DBInfoinfo=newDBInfo();StringprivatestaticDBInfotoDBInfo(Elementelement){DBInfoinfo=newDBInfo();StringStringStringpassword=element.elementText(ELEMENT_PASSWORD); StringdbName=element.getName();//獲取當(dāng)前 return FileInputStreamFileInputStreamfis=new"day03"+File.separator+"part2"+File.separator+"db_info.xml");List<DBInfo>infos=XMLUtils.xmlToDBInfo(fis);for(DBInfoinfo:infos){ 案例:使用DOM4J包的API寫入xml文件xml/**XML*/publicstaticvoidwriteDBInfosToXml(OutputStream/**XML*/publicstaticvoidwriteDBInfosToXml(OutputStreamout,List<DBInfo>infos)throws//1 //2 的addElement(Stringname)方 該方法有返回值,返回值為添加的根標(biāo)記對(duì)象Element*/Element //3/**for(DBInfofor(DBInfoElement//4}writer.write(root);//XML}/**DBinfoElementpublic/**DBinfoElementpublicstaticElementtoDBInfoElement(DBInfo//1創(chuàng)建一個(gè)空的ELement對(duì)象,該對(duì)象僅代表oracle或 Element//2url、driverElement Element //3user="user"return FileInputStreamFileInputStreamfis=new"day03"+File.separator+"part2"+File.separator+"db_info.xml");List<DBInfo>infos=XMLUtils.xmlToDBInfo(fis);Filefile=newFile("out.xml"); FileOutputStreamfos=new兩個(gè)以字符串傳遞。還有一個(gè)比較常見的是protocolbuffer以字節(jié)傳遞四、XPath語言XPathXML中查找信息語言。XPathXML文檔中對(duì)元素和屬性XPath基本介紹XPath使用路徑表達(dá)式在XMLXPath是XSLTXPath是一個(gè)W3CXPath的好處DOMXPath,XPath基本語法XPath取所有的ID屬性。1,即獲

溫馨提示

  • 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)論