版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、XML解析1、 XML基礎(chǔ)1) 什么是XMLl XML是指可擴展標記語言(eXtensible Markup Language),它也是一種標記語言,很類似HTML。它被設(shè)計的宗旨是存儲數(shù)據(jù),而非顯示數(shù)據(jù)。l Html展示數(shù)據(jù)l XML標簽沒有被預(yù)定義,需要用戶自行定義標簽。l XML技術(shù)是W3C組織(World Wide Web Consortium萬維網(wǎng)聯(lián)盟)發(fā)布的,目前遵循的是W3C組織于2000年發(fā)布的XML1.0規(guī)范。l XML被廣泛認為是繼Java之后在Internet上最激動人心的新技術(shù)。l W3CSchool(入門級)2) XML常見應(yīng)用l 用于數(shù)據(jù)存儲l 用在軟件配置,用于描
2、述模塊之間的關(guān)系(如果著名的Struts、Spring和Hibernate都是基于XML作為配置文件的-SSH)android都是xml。 圖形界面都是用的xmll 在一個軟件系統(tǒng)中,通過XML配置文件可以提高系統(tǒng)的靈活性。即程序的行為是通過XML文件來配置的,而不是硬編碼。l XML是一種通用的數(shù)據(jù)交換格式。(跨平臺)2、 XML語法語法較多,建議先直接上手寫案例,成功之后再回來當回顧學(xué)習用一個XML文件主要包括以下幾個部分:l 文檔聲明l 元素l 屬性l 注釋 l 實體引用及CDATA區(qū) l 處理指令(PI:Processing Instruction)l Xml約束 1) 文檔聲明l 在
3、編寫XML文檔時,需要先使用文檔聲明來聲明XML文檔。且必須出現(xiàn)在文檔的第一行。(前面注釋都不允許) 最簡單的語法:l 用encoding屬性說明文檔所使用的字符編碼。保存在磁盤上的文件編碼要與聲明的編碼一致。 如:l 用standalone屬性說明文檔是否獨立,即是否依賴其他文檔。 如:2) 元素l XML元素指XML文件中出現(xiàn)的標簽。一個標簽分為起始和結(jié)束標簽(不能省略)。一個標簽有如下幾種書寫形式:n 包含標簽主體:some content n 不含標簽主體:(有時也叫空標簽)n 一個標簽中可以嵌套若干子標簽,但所有標簽必須合理的嵌套,不允許有交叉嵌套。n l 一個XML文檔必須有且僅有
4、一個根標簽,其他標簽都是這個根標簽的子標簽或?qū)O標簽。l 對于XML標簽中出現(xiàn)的所有空格和換行,XML解析程序都會當作標簽內(nèi)容進行處理。例如:下面兩段內(nèi)容的意義是不一樣的。ww.1000phone.copm ww.1000phone.copm -DOM解析l 由于在XML中,空格和換行都作為原始內(nèi)容被處理,所以,在解析XML文件時要特殊處理下,繞過這些空格和換行符。l 元素命名規(guī)范:一個XML元素可以包含字母、數(shù)字以及其它一些可見字符,但必須遵守下面的一些規(guī)范n 區(qū)分大小寫,例如,和是兩個不同的標記。(與java、c變量命名一致)n 不能以數(shù)字或_ (下劃線)開頭。n 不能以xml(或XML、或
5、Xml 等)開頭。(xml 為關(guān)鍵字,所以不能重復(fù))n 不能包含空格。n 名稱中間不能包含冒號(:)。n 一句話:像個正常人一樣去寫名稱就行,不用關(guān)鍵字3) 屬性l 一個元素可以有多個屬性,每個屬性都有它自己的名稱和取值,例如:l 屬性值一定要用引號(單引號或雙引號)引起來。l 屬性名稱的命名規(guī)范與元素的命名規(guī)范相同l 元素中屬性沒有順序要求,但是不準重復(fù)。l 在XML技術(shù)中,標簽屬性所代表的信息也可以被改成用子元素的形式來描述4) 注釋l XML中的注釋語法為:l 注意:l XML聲明之前不能有注釋(xml聲明必須放在文檔第一行)l 注釋不能嵌套5) 實體引用及CDATA區(qū)實體引用l 在 X
6、ML 中,一些字符擁有特殊的意義。如果你把字符 放在 XML 元素中,會發(fā)生錯誤,這是因為解析器會把它當作新元素的開始。如下這樣會產(chǎn)生 XML 錯誤:if salary 1000 thenl 為了避免此類錯誤,需要把字符 替換為實體引用,就像這樣:if salary < 1000 then在 XML 中有 5 個預(yù)定義的實體引用:< 大于&&和號'省略號"引號l 注意:嚴格地講,在 XML 中僅有字符 和& 是非法的。省略號、引號和大于號是合法的,但是把它們替換為實體引用是個好的習慣。CDATA區(qū)術(shù)語 CDATA 指的是不應(yīng)由 XML 解析器進行解析的文
7、本數(shù)據(jù)(Unparsed Character Data)。在 XML 元素中, 和 & 是非法的。 會產(chǎn)生錯誤,因為解析器會把該字符解釋為新元素的開始。& 也會產(chǎn)生錯誤,因為解析器會把該字符解釋為字符實體的開始。某些文本,比如 JavaScript 代碼,包含大量 或 & 字符。為了避免錯誤,可以將腳本代碼定義為 CDATA。CDATA 部分中的所有內(nèi)容都會被解析器忽略。CDATA 部分由 結(jié)束:6) 處理指令(了解即可)l 處理指令,簡稱PI(Processing Instruction)。l 作用:用來指揮軟件如何解析XML文檔。l 語法:必須以“”作為結(jié)尾。l 常用處理指令:n XML聲
8、明:n xml-stylesheet指令:作用:指示XML文檔所使用的CSS樣式XSLT。7) XML約束(了解即可)為什么需要約束:l XML都是用戶自定義的標簽,若出現(xiàn)小小的錯誤,軟件程序?qū)⒉荒苷_地獲取文件中的內(nèi)容而報錯。什么是XML約束:l 約束文檔定義了在XML中允許出現(xiàn)的元素名稱、屬性及元素出現(xiàn)的順序等等。l 在XML技術(shù)里,可以編寫一個文檔來約束一個XML文檔的書寫規(guī)范,這稱之為XML約束。l 常用的約束技術(shù)XML DTD, XML Schema l 作為普通工程師,一般是使用別人的約束文件,而不會自己去寫約束。例如使用SSH框架開始時用到的xml文件,均要受框架的提供的xml的
9、約束文件的約束3、 SAX解析XML解析方式主要有:DOM(文檔對象模型):將整個文件以樹的結(jié)構(gòu)存儲到內(nèi)存中,適合小文件,程序可讀性高。Dom4jSAX(基于事件流的解析):省內(nèi)存,程序可讀性相比上述較差。PULL(Android自帶解析器):也是基于事件流的解析本次,我們只學(xué)習SAX和PULL兩種方式正式來學(xué)習SAX解析Simple APIs for XML,XML簡單應(yīng)用程序接口,在javax.xml.parsers包中,SAX解析是JDK自帶的解析方式,包括一組接口和類1) SAX解析原理以事件驅(qū)動的方式解析,即找開始結(jié)束標簽的方式SAX的工作原理簡單地說就是對文檔進行順序掃描,當掃描到
10、文檔(document)開始與結(jié)束、元素(element)開始與結(jié)束、等地方時通知事件處理函數(shù),由事件處理函數(shù)做相應(yīng)動作,然后繼續(xù)同樣的掃描,直至文檔結(jié)束。所以有兩個關(guān)鍵點:順序掃描,事件處理函數(shù)2) 案例:解析指定文件(標簽無屬性),并將文件中的信息存放到list中-需要先創(chuàng)建XML文件3) 案例:解析指定文件(根標簽有屬性),并將文件中的信息存放到list中假設(shè):我們給每個phone加一個id屬性,那么在解析根節(jié)點的時候,就需要獲取到id信息并賦值給對象。4、 PULL解析 在android系統(tǒng)中,很多資源文件中,很多都是xml格式,在android系統(tǒng)中解析這些xml的方式,是使用pul解析器進行解析的,它和sax解析一樣,也是采用事件驅(qū)動進行解析的,同時,由于android內(nèi)核已經(jīng)內(nèi)嵌了pull,所以我們不需要添加第三方的jar包來支持pull。1) 案例:解析XML文件(不帶屬性)首先,需要jar包:具體實現(xiàn)步驟如下:基本上跟sax的解析思路是一樣的。幾個關(guān)鍵的方法強調(diào)下:獲取其狀態(tài)碼,區(qū)分現(xiàn)在是哪個事件源(文檔開頭,文檔結(jié)尾,標簽開頭,標簽結(jié)尾)獲取標簽名稱獲取標簽的文本內(nèi)容讓指針繼續(xù)往下解析下一個事件源2) 案例:解析XML文件(帶屬性)3) PULL vs SAX Pull解析器和SAX解析器雖有相似性但也有區(qū)別,他
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年砂石銷售的合同
- 三七產(chǎn)地購銷合同模板2024年
- 股權(quán)分配合作協(xié)議書
- 手機品牌售后服務(wù)承諾書
- 固定期限勞動合同樣式
- 定向培育及就業(yè)協(xié)議
- 保險合同:航空貨物運輸保險協(xié)議-合同范本
- 建筑工程項目招標代理合同
- 國家基礎(chǔ)地理信息授權(quán)書
- 合伙協(xié)議合同范文
- 鄉(xiāng)鎮(zhèn)平安建設(shè)培訓(xùn)課件
- 廣東省珠海市2024年春季高考模擬考試數(shù)學(xué)試卷含答案
- 四川航空介紹
- 從銷售到營銷的轉(zhuǎn)變與發(fā)展
- 車間監(jiān)控方案
- 家庭教育指導(dǎo)站制度
- 機務(wù)指導(dǎo)司機競聘報告
- 2023年上海各區(qū)初三數(shù)學(xué)一模卷
- 伴游旅行行業(yè)分析
- 部編版二年級上冊黃山奇石課件
- 計算機畢業(yè)設(shè)計jsp家庭美食食譜網(wǎng)站系統(tǒng)vue論文
評論
0/150
提交評論