




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
目一、XML基本語 XML介 XML元 XML屬 實體 DTD元 DTD元素:空元 DTD元素:含有 DTD元素:總 DTD中元素的屬 DTD命名空間介 二、Schema簡 Schema的作 Schema文件的擴展名 三、Java解析 Java與XML共同 Java解析XML有兩種方 DOM解 SAX解 案例:使用DOM4J包的API解析xml文 案例:使用DOM4J包的API寫入xml文 四、XPath語 XPath基本介 使用XPath的好 XPath基本語 DOM4J對XPath的支 五、附db_info.xml文 一、XML基本語法XML介紹Language2)XML是獨立于軟件和硬件的信息傳輸工具。.xmlXML可以描繪樹狀結構的數(shù)據(jù)。因為這個特點,除了傳輸數(shù)據(jù)外,時候我們使XML作為配置文件。XML是一種標記語言,很類似HTML立于1994年的組織,其是通過促進通用協(xié)議的發(fā)展并確保其通用型,以激發(fā)web世界XML元素XML文檔包含XML例如:XML例如:XML文件內容都是 XML屬性XML元素可以在開始中包含屬(即屬性是中定義的屬XML屬性的屬性值必須使用引號,單引號‘’或雙引號“”都可以!如果屬性值本例如:例如:oracleuser="chang的'連接實體<>&;'"XML中有特殊含義的字CDATAxmlXML敏感的字符,而我們又不希望逐一的對CDATA段是最理想的。語法格式:CDATA[忽略檢查的文本]><script<scriptfunction }]]xmlxml文件格式xml文件要有相同的元素嵌套關系、相同的屬性定義、相同的元素順序、元素出如下為兩份相同數(shù)據(jù),但是結構不同的xmlDTD元在一個DTD中,元素通過元素來進行(用于和約束元素DTD元素語法<!ELEMENT元素名(元素內容<!ELEMENTDTD元素:空元例如:<!ELEMENTpage例如:<!ELEMENTpageDTD元素:含有例如:<!ELEMENTpage例如:<!ELEMENTpage這時候page中只能出現(xiàn)文本內容,但要注意,該文本內容是需要檢查的,就是說不能出現(xiàn)XML敏感字符。[DTD元素:帶有子元素(子元素列表)的元語法:<!ELEMENT(1,例如:<!ELEMENTjdbc<!ELEMENToracle<!ELEMENTmysql 表示有一個叫jdbc的它其中只能包含兩個分別是oracle和mysql,例如:<!ELEMENTjdbc<!ELEMENToracle<!ELEMENTmysql注意事項: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對應 “” DTD元素:子元素可以是元素也可以是文例如 定 例如 DTD元素:總(en1|en2|值為唯一的值為另外一個元素的ID值為合法的XML值為合法的XML值是一個預定義的XMLDTD中元素的屬<oracle></oracle><!--<oracleuser="user"></oracle><!--例如:例如:<!ELEMENTpackage屬性類型en1en2…屬性值的約束DTD命名空間介紹(aeSpaceXL命名空間的目的是有效的區(qū)分來自不同DTDxml文件中使用<type>coffee二、Schema簡介Schema的作用因為DTD無法解決命名問題,所以出現(xiàn)了Schema,它是DTD的替代者。DTDSchemaXMLSchema:W3C一套用于約束XML元素的標準,支持命名空間,和DTD的作用一致。DTD因為定義語法相對,且不是標準的XML形式去描述定義的。而Schema本Schema文件的擴展名XMLSchemaDifinition(簡稱XSDW3C標準三、JavaJavaXML共同點JavaXML的解析比其他語言更完善(JavaXML最好的語言。JavaXML有兩種方式1)DOM:文本對象模型(ObjectModel)2)SAXxmlAPI(SimpleAPIForXML)SAX進行解析。例如androidSAXxml文件的工具的。AndroidPull解析。JDOM/DOM4J2種解析XMLAPIDOM解析XML是以樹狀結構進行解析的。DOM在解析XMLxml內容解析Element(元素)描繪每個節(jié)點和嵌套關系,并載入內存。xml文件在內存中構造樹型結構,可以遍歷和修改節(jié)點,因為它知道節(jié)點SAX解析案例:使用DOM4J包的API解析xml文件我們使用DOM工具,來自DOM4JxmlDOM工具,還有一種JDOM,解析步驟:創(chuàng)建用于解析Xml文件的器第2步的方返回一個對象,描述整個文檔,通過該文檔對象獲取根step1DBinfo類,其中屬性有privateStringusername;//數(shù)據(jù)庫用戶名privateStringdbName;//數(shù)據(jù)庫連接名privateStringpassword;//數(shù)據(jù)庫privateStringattUser;//數(shù)據(jù)庫/**/**定義常量,用于描述當前解析的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說明:因為我們要使用DOMXML文件,那么一序中都是通過輸入流的形式的。*///1dom4j需要導包:dom4j-1.6.1.jarSAXReaderreader=newSAXReader();/**xmlfalsetrue ,驗證DTD。//2; }catch(Exception thrownewRuntimeException("數(shù) //3/**root.getName()用于獲取當前 的名字,這里應該是jdbc*/Elementroot= //4/**root.elements();該方法獲取rootroot.elements(Stringname);*/List<Element>childList=root.elements();/**oraclemysqlDBInfo對象中,再將這些對象存入一個集合并返回,最終完成解析工作。*/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();//獲取當前 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)方 該方法有返回值,返回值為添加的根標記對象Element*/Element //3/**for(DBInfofor(DBInfoElement//4}writer.write(root);//XML}/**DBinfoElementpublic/**DBinfoElementpublicstaticElementtoDBInfoElement(DBInfo//1創(chuàng)建一個空的ELement對象,該對象僅代表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兩個以字符串傳遞。還有一個比較常見的是protocolbuffer以字節(jié)傳遞四、XPath語言XPathXML中查找信息語言。XPathXML文檔中對元素和屬性XPath基本介紹XPath使用路徑表達式在XMLXPath是XSLTXPath是一個W3CXPath的好處DOMXPath,XPath基本語法XPath取所有的ID屬性。1,即獲
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度研學旅行教育咨詢與服務合作協(xié)議
- 2025年度私人珠寶抵押典當貸款協(xié)議
- 2025年度新能源材料研究院校企合作協(xié)議書
- 二零二五年度商鋪租賃合同終止及商業(yè)設施維護協(xié)議
- 2025年度電力系統(tǒng)調試電力工程勞務承建合同
- 2025年度火鍋加盟店加盟費及利潤分配合同
- 二零二五年度變壓器運輸保險與安全協(xié)議
- 二零二五年度租賃房屋提前解除合同
- 二零二五年度科研機構員工勞務派遣合作協(xié)議
- 2025年度生物制品簡易供貨合同
- 《鈉離子電池產(chǎn)業(yè)發(fā)展白皮書》
- 2025中考作文預測
- 油氣田開發(fā)專業(yè)危害因素辨識與風險防控
- 假肢安裝合同范本
- DB37-T4824-2025 鄉(xiāng)鎮(zhèn)(街道)應急物資配備指南
- 教育部人文社科 申請書
- 無菌手術臺鋪置的細節(jié)管理
- 《重大基礎設施項目涉及風景名勝區(qū)選址論證報告編制技術規(guī)范》編制說明
- 議論文8(試題+審題+范文+點評+素材)-2025年高考語文寫作復習
- 2025年中國中煤能源股份有限公司招聘筆試參考題庫含答案解析
- 2025-2030年(全新版)中國軟冰淇淋市場發(fā)展趨勢與投資戰(zhàn)略研究報告
評論
0/150
提交評論