




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
XML的解析與操作本節(jié)主要目標(biāo)XML的定義與作用XML中的節(jié)點元素如何編寫格式正規(guī)的XML使用DOM4J來解析XMLXPath的語法和使用XML來源XML(eXtensiblemarkuplanguage)可擴(kuò)展標(biāo)識語言W3C組織提出的標(biāo)準(zhǔn),從SGML(標(biāo)準(zhǔn)通用標(biāo)識語言)衍生出來的簡化版本XML與HTML的比較htmlxml標(biāo)簽固定標(biāo)簽自由不具有擴(kuò)展性可擴(kuò)展性展現(xiàn)數(shù)據(jù)描述數(shù)據(jù)內(nèi)容描述與顯示方式整合為一體內(nèi)容描述與顯示方式相分離
XML的應(yīng)用范圍數(shù)據(jù)交換Web服務(wù)內(nèi)容管理Web集成系統(tǒng)配置.............XML簡單的XML示例<?xmlversion="1.0"encoding="GBK"standalone="no"?><root><studentid="1"><stu_name>張三</stu_name><stu_age>21</stu_age><stu_sex>男</stu_sex><stu_content>1+2>3</stu_content></student><studentid="2"><stu_name>李四</stu_name><stu_age>22</stu_age><stu_sex>女</stu_sex><stu_content><![CDATA[這是我的描述內(nèi)容]]></stu_content></student></root>XML聲明<?xmlversion="1.0"encoding="UTF-8"standalone="yes"?>XML聲明一般是XML文檔的第一行XML聲明由以下幾個部分組成:version--文檔符合XML1.0規(guī)范encoding--文檔字符編碼,默認(rèn)為"UTF-8"standalone--文檔定義是否在一個文件內(nèi)
standalone="yes" standalone="no"XML節(jié)點XML與DOM一樣,是一些節(jié)點的集合,由于文檔中能包含有不同類型的信息,所以定義了幾種不同類型的節(jié)點。XML中最常見的節(jié)點類型有:元素節(jié)點:元素是XML的基本構(gòu)件。元素的子節(jié)點可以是其它元素、文本節(jié)點或兩者都有。元素節(jié)點還可以只含有屬性這一唯一類型的節(jié)點屬性點點:屬性節(jié)點包含關(guān)于元素節(jié)點的信息,但它不是元素的子節(jié)點文本節(jié)點:文本節(jié)點文本信息,或干脆是空白的文本文檔節(jié)點:文檔節(jié)點是整個文檔中所有其它節(jié)點的父節(jié)點 CDATA節(jié)點:注釋節(jié)點根元素每個XML文檔必須有且只有一個根元素。根元素是一個完全包括文檔中其他所有元素的元素。根元素的起始標(biāo)記要放在所有其他元素的起始標(biāo)記之前。根元素的結(jié)束標(biāo)記要放在所有其他元素的結(jié)束標(biāo)記之后。元素節(jié)點<title>標(biāo)題名稱</title>
開始標(biāo)記文本內(nèi)容結(jié)束標(biāo)記<title/>:表示一個空元素,名稱為title<titleid=“101”/>:表示一個空元素,名稱為title元素之間的關(guān)系:子元素/父元素、祖先/后代元素內(nèi)容的類型:嵌套元素/字符數(shù)據(jù)/實體引用/CDATA節(jié)/處理指令/注釋屬性節(jié)點<StudentID="100"></Student>屬性值用雙引號(“)或單引號(‘)分隔一個元素可以有多個屬性,它的基本格式為:<元素名屬性名="屬性值">特定的屬性名稱在同一個元素標(biāo)記中只能出現(xiàn)一次屬性值不能包括<,>,&注釋節(jié)點<!--注釋的內(nèi)容-->注釋內(nèi)容中不要出現(xiàn)--;不要把注釋放在標(biāo)記中間;<Name<!--thename>>TOM</Name>注釋不能嵌套;特殊字符實體符號<<>>&&""''CDATA節(jié)點用于把整段文本解釋為純字符數(shù)據(jù)而不是標(biāo)記的情況。包含大量<、>、&或者"字符。CDATA節(jié)中的所有字符都會被當(dāng)作元素字符數(shù)據(jù)的常量部分,而不是XML標(biāo)記。語法:
<![CDATA[ …………]]>可以輸入任意字符(除]]>外)不能嵌套常用于在CDATA中寫SQL語句,使SQL語句脫離程序的綁定開源的Ibatis框架就是將SQL寫在XML文件中。格式正規(guī)的XML文檔遵循如下規(guī)則的XML文檔稱為格式正規(guī)的XML文檔:語法規(guī)范必須有XML聲明語句必須有且僅有一個根元素標(biāo)記大小寫敏感屬性值用引號標(biāo)記成對空標(biāo)記關(guān)閉元素正確嵌套驗證XML編寫是否正規(guī),將XML文件在IE中運行即可觀察是否編寫錯誤服務(wù)端解析用Java解析XML文檔,最常用的有兩種方法:使用基于事件的XML簡單API(SimpleAPIforXML)稱為SAX和基于樹和節(jié)點的文檔對象模型(DocumentObjectModule)稱為DOM。Sun公司提供了JavaAPIforXMLParsing(JAXP)接口來使用SAX和DOM,通過JAXP,我們可以使用任何與JAXP兼容的XML解析器。JAXP接口包含了三個包:org.w3c.dom
W3C推薦的用于XML標(biāo)準(zhǔn)規(guī)劃文檔對象模型的接口。org.xml.sax用于對XML進(jìn)行語法分析的事件驅(qū)動的XML簡單API(SAX)javax.xml.parsers解析器工廠工具,程序員獲得并配置特殊的特殊語法分析器。DOM4JDOM在java平臺上的應(yīng)用dom4j是一套開源的類庫。集成的XPath(路徑查詢語言)支持、XMLSchema(約束模式文檔)支持。具體操作:獲取到dom4j的jar包以及幫助文檔。將jar包設(shè)置到classpath中,就可以使用dom4j中提供的對象,進(jìn)行xml文檔的解析了。查看幫助文檔了解對象的使用。XML文檔基本操作——Document獲取xml文檔對象Document。
FilexmlFile=newFile(“test.xml”); SAXReaderreader=newSAXReader(); DocumentxmlDoc=reader.read(xmlFile);DOM4J的體系結(jié)構(gòu)NodeAttributeBranchDocumentElementDocument:用于描述XML文檔。Element:用于描述XML文檔中的元素。Attribute:用于描述XML文檔中的元素的屬性。XML文檔基本操作——Element獲取根元素對象
Elementroot=xmlDoc.getRootElement();獲取根元素名稱
StringelementName=root.getName();獲取直接子元素對象通過元素名稱獲取元素對象Elementelement=root.element(“元素名稱");獲取所有直接子元素對象集合
ListelementList=root.elements();XML文檔基本操作——Element獲取元素對象中的文本獲取element元素的內(nèi)部文本
Stringtext=element.getText();獲取element子元素內(nèi)部文本
Stringtext=element.elementText(“子元素名稱”);XML文檔基本操作——Attribute獲取元素屬性對象通過屬性名獲取元素屬性對象Attributeattribute=element.attribute(“屬性名稱");通過索引獲取屬性對象Attributeattribute=element.attribute(0);獲取所有屬性對象集合ListattributeList=root.attributes();獲取屬性值通過屬性對象
Stringvalue=attribute.getValue();通過元素對象Stringvalue=element.attributeValue(“屬性名稱”);XML文檔基本操作——創(chuàng)建創(chuàng)建文檔DocumentDocumentdocument=DocumentHelper.createDocument();創(chuàng)建元素Elementelement=document.addElement(“元素名稱");創(chuàng)建屬性element.addAttribute(“屬性名”,“屬性值");添加屬性方法返回的是原元素對象。如同StringBuffer。創(chuàng)建文本element.addText(“文本");XML文檔基本操作——刪除節(jié)點remove(Elementelement)remove(Attributeattribute)remove(Texttext)……remove(Nodenode)Node接口的子類對象都可以移除注意:remove是移除直接子節(jié)點時使用parentElement.remove(childElement);DOM4J寫入格式化/**將document中的內(nèi)容寫入文件中*/OutputFormatformat=OutputFormat.createPrettyPrint();/**指定XML編碼*/format.setEncoding("GBK");//設(shè)置縮進(jìn)format.setIndent("\t");XMLWriterwriter=newXMLWriter(newFileWriter(filename),format);writer.write(document);writer.close();DOM4J對于XML文件的操作XML文件的讀取XML文件的添加元素XML文件的刪除元素XML文件的修改元素XPath介紹XPath是在XML文檔中查找信息的語言XPath是通過元素和屬性進(jìn)行查找XPath簡化了Dom4j查找節(jié)點的過程使用XPath必須導(dǎo)入jaxen-1.1-beta-6.jar否則出現(xiàn)NoClassDefFoundError:org/jaxen/JaxenExceptionXPath介紹XPath是一門在XML文檔中查找信息的語言。類似于數(shù)據(jù)庫的SQL。在XPath中,有七種類型的節(jié)點:元素、屬性、文本、命名空間、處理指令、注釋以及文檔(根)節(jié)點。XML文檔是被作為節(jié)點樹來對待的。樹的根被稱為文檔節(jié)點或者根節(jié)點。XPath語法/students/student通過絕對路徑獲取students根節(jié)點下所有的直接子節(jié)點student元素對象students/student通過相對路徑獲取students根節(jié)點下所有的直接子節(jié)點student元素對象//name獲取所有name元素對象,不考慮位置student//name獲取student元素下所有的name元素對象//@id獲取所有的id屬性對象//student[@id]獲取所有帶id屬性的studen
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度浙江省二級造價工程師之建設(shè)工程造價管理基礎(chǔ)知識綜合練習(xí)試卷B卷附答案
- 2024年度浙江省二級造價工程師之土建建設(shè)工程計量與計價實務(wù)能力測試試卷A卷附答案
- 幼兒教師基本禮儀培訓(xùn)
- 美業(yè)講師培訓(xùn)
- DB43-T 2863-2023 樟葉槭扦插育苗技術(shù)規(guī)程
- 統(tǒng)編版二年級語文下冊第一單元基礎(chǔ)測試卷(單元測試)(含答案)
- 員工產(chǎn)品培訓(xùn)
- 人的全面發(fā)展教育
- 電腦物理面試題及答案
- 創(chuàng)業(yè)前景面試題及答案
- 光伏運維技能大賽備考試題含答案
- 高考英語讀后續(xù)寫練習(xí)03:女兒離家又回家+講義
- 2024鐵塔采購合同模板
- 鹵菜店供貨合同協(xié)議書
- 華為云:2024年EMS彈性內(nèi)存存儲技術(shù)白皮書
- 卡粘式連接薄壁不銹鋼管道工程技術(shù)規(guī)程
- 2024年山東普通高中學(xué)業(yè)水平等級考試化學(xué)(原卷版)
- 接警員試題題庫
- 湖南省岳陽市2024年八年級下學(xué)期期末物理試卷附答案
- DZ∕T 0284-2015 地質(zhì)災(zāi)害排查規(guī)范(正式版)
- 《風(fēng)電功率預(yù)測功能規(guī)范》
評論
0/150
提交評論