xml語言基礎(chǔ)簡(jiǎn)單介紹_第1頁
xml語言基礎(chǔ)簡(jiǎn)單介紹_第2頁
xml語言基礎(chǔ)簡(jiǎn)單介紹_第3頁
xml語言基礎(chǔ)簡(jiǎn)單介紹_第4頁
xml語言基礎(chǔ)簡(jiǎn)單介紹_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、XML解析1、 XML基礎(chǔ)1) 什么是XMLl XML是指可擴(kuò)展標(biāo)記語言(eXtensible Markup Language),它也是一種標(biāo)記語言,很類似HTML。它被設(shè)計(jì)的宗旨是存儲(chǔ)數(shù)據(jù),而非顯示數(shù)據(jù)。l Html展示數(shù)據(jù)l XML標(biāo)簽沒有被預(yù)定義,需要用戶自行定義標(biāo)簽。l XML技術(shù)是W3C組織(World Wide Web Consortium萬維網(wǎng)聯(lián)盟)發(fā)布的,目前遵循的是W3C組織于2000年發(fā)布的XML1.0規(guī)范。l XML被廣泛認(rèn)為是繼Java之后在Internet上最激動(dòng)人心的新技術(shù)。l W3CSchool(入門級(jí))2) XML常見應(yīng)用l 用于數(shù)據(jù)存儲(chǔ)l 用在軟件配置,用于描

2、述模塊之間的關(guān)系(如果著名的Struts、Spring和Hibernate都是基于XML作為配置文件的-SSH)android都是xml。 圖形界面都是用的xmll 在一個(gè)軟件系統(tǒng)中,通過XML配置文件可以提高系統(tǒng)的靈活性。即程序的行為是通過XML文件來配置的,而不是硬編碼。l XML是一種通用的數(shù)據(jù)交換格式。(跨平臺(tái))2、 XML語法語法較多,建議先直接上手寫案例,成功之后再回來當(dāng)回顧學(xué)習(xí)用一個(gè)XML文件主要包括以下幾個(gè)部分:l 文檔聲明l 元素l 屬性l 注釋 l 實(shí)體引用及CDATA區(qū) l 處理指令(PI:Processing Instruction)l Xml約束 1) 文檔聲明l 在

3、編寫XML文檔時(shí),需要先使用文檔聲明來聲明XML文檔。且必須出現(xiàn)在文檔的第一行。(前面注釋都不允許) 最簡(jiǎn)單的語法:<?xml version=“1.0”?>l 用encoding屬性說明文檔所使用的字符編碼。保存在磁盤上的文件編碼要與聲明的編碼一致。 如:<?xml version=“1.0” encoding=“utf-8”?>l 用standalone屬性說明文檔是否獨(dú)立,即是否依賴其他文檔。 如:<?xml version=“1.0” encoding=“utf-8” standalone=“yes”?>2) 元素l XML元素指XML文件中出現(xiàn)的標(biāo)

4、簽。一個(gè)標(biāo)簽分為起始和結(jié)束標(biāo)簽(不能省略)。一個(gè)標(biāo)簽有如下幾種書寫形式:n 包含標(biāo)簽主體:<mytag>some content</mytag> n 不含標(biāo)簽主體:<mytag />(有時(shí)也叫空標(biāo)簽)n 一個(gè)標(biāo)簽中可以嵌套若干子標(biāo)簽,但所有標(biāo)簽必須合理的嵌套,不允許有交叉嵌套。n <mytag1><mytag2></mytag1></mytag2> l 一個(gè)XML文檔必須有且僅有一個(gè)根標(biāo)簽,其他標(biāo)簽都是這個(gè)根標(biāo)簽的子標(biāo)簽或?qū)O標(biāo)簽。l 對(duì)于XML標(biāo)簽中出現(xiàn)的所有空格和換行,XML解析程序都會(huì)當(dāng)作標(biāo)簽內(nèi)容進(jìn)行處理。

5、例如:下面兩段內(nèi)容的意義是不一樣的。<網(wǎng)址> </網(wǎng)址><網(wǎng)址>ww.1000phone.copm</網(wǎng)址> -DOM解析l 由于在XML中,空格和換行都作為原始內(nèi)容被處理,所以,在解析XML文件時(shí)要特殊處理下,繞過這些空格和換行符。l 元素命名規(guī)范:一個(gè)XML元素可以包含字母、數(shù)字以及其它一些可見字符,但必須遵守下面的一些規(guī)范n 區(qū)分大小寫,例如,<A>和<a>是兩個(gè)不同的標(biāo)記。(與java、c變量命名一致)n 不能以數(shù)字或"_" (下劃線)開頭。n 不能以xml(或XML、或Xml 等)開頭。(xm

6、l 為關(guān)鍵字,所以不能重復(fù))n 不能包含空格。n 名稱中間不能包含冒號(hào)(:)。n 一句話:像個(gè)正常人一樣去寫名稱就行,不用關(guān)鍵字3) 屬性l 一個(gè)元素可以有多個(gè)屬性,每個(gè)屬性都有它自己的名稱和取值,例如:<mytag name=“value” />l 屬性值一定要用引號(hào)(單引號(hào)或雙引號(hào))引起來。l 屬性名稱的命名規(guī)范與元素的命名規(guī)范相同l 元素中屬性沒有順序要求,但是不準(zhǔn)重復(fù)。l 在XML技術(shù)中,標(biāo)簽屬性所代表的信息也可以被改成用子元素的形式來描述4) 注釋l XML中的注釋語法為:<!-這是注釋->l 注意:l XML聲明之前不能有注釋(xml聲明必須放在文檔第一行)

7、l 注釋不能嵌套5) 實(shí)體引用及CDATA區(qū)實(shí)體引用l 在 XML 中,一些字符擁有特殊的意義。如果你把字符 "<" 放在 XML 元素中,會(huì)發(fā)生錯(cuò)誤,這是因?yàn)榻馕銎鲿?huì)把它當(dāng)作新元素的開始。如下這樣會(huì)產(chǎn)生 XML 錯(cuò)誤:<message>if salary < 1000 then</message>l 為了避免此類錯(cuò)誤,需要把字符 "<" 替換為實(shí)體引用,就像這樣:<message>if salary &lt; 1000 then</message>在 XML 中有 5 個(gè)預(yù)定義的

8、實(shí)體引用:&lt; <小于&gt;>大于&amp;&和號(hào)&apos;'省略號(hào)&quot;"引號(hào)l 注意:嚴(yán)格地講,在 XML 中僅有字符 "<"和"&" 是非法的。省略號(hào)、引號(hào)和大于號(hào)是合法的,但是把它們替換為實(shí)體引用是個(gè)好的習(xí)慣。CDATA區(qū)術(shù)語 CDATA 指的是不應(yīng)由 XML 解析器進(jìn)行解析的文本數(shù)據(jù)(Unparsed Character Data)。在 XML 元素中,"<" 和 "&" 是非法的。&q

9、uot;<" 會(huì)產(chǎn)生錯(cuò)誤,因?yàn)榻馕銎鲿?huì)把該字符解釋為新元素的開始。"&" 也會(huì)產(chǎn)生錯(cuò)誤,因?yàn)榻馕銎鲿?huì)把該字符解釋為字符實(shí)體的開始。某些文本,比如 JavaScript 代碼,包含大量 "<" 或 "&" 字符。為了避免錯(cuò)誤,可以將腳本代碼定義為 CDATA。CDATA 部分中的所有內(nèi)容都會(huì)被解析器忽略。CDATA 部分由 "<!CDATA" 開始,由 ">" 結(jié)束:6) 處理指令(了解即可)l 處理指令,簡(jiǎn)稱PI(Processing Instr

10、uction)。l 作用:用來指揮軟件如何解析XML文檔。l 語法:必須以“<?”作為開頭,以“?>”作為結(jié)尾。l 常用處理指令:n XML聲明:<?xml version=“1.0” encoding=“GB2312”?>n xml-stylesheet指令:作用:指示XML文檔所使用的CSS樣式XSLT。7) XML約束(了解即可)為什么需要約束:l XML都是用戶自定義的標(biāo)簽,若出現(xiàn)小小的錯(cuò)誤,軟件程序?qū)⒉荒苷_地獲取文件中的內(nèi)容而報(bào)錯(cuò)。什么是XML約束:l 約束文檔定義了在XML中允許出現(xiàn)的元素名稱、屬性及元素出現(xiàn)的順序等等。l 在XML技術(shù)里,可以編寫一個(gè)文檔

11、來約束一個(gè)XML文檔的書寫規(guī)范,這稱之為XML約束。l 常用的約束技術(shù)XML DTD, XML Schema l 作為普通工程師,一般是使用別人的約束文件,而不會(huì)自己去寫約束。例如使用SSH框架開始時(shí)用到的xml文件,均要受框架的提供的xml的約束文件的約束3、 SAX解析XML解析方式主要有:DOM(文檔對(duì)象模型):將整個(gè)文件以樹的結(jié)構(gòu)存儲(chǔ)到內(nèi)存中,適合小文件,程序可讀性高。Dom4jSAX(基于事件流的解析):省內(nèi)存,程序可讀性相比上述較差。PULL(Android自帶解析器):也是基于事件流的解析本次,我們只學(xué)習(xí)SAX和PULL兩種方式正式來學(xué)習(xí)SAX解析Simple APIs for

12、XML,XML簡(jiǎn)單應(yīng)用程序接口,在javax.xml.parsers包中,SAX解析是JDK自帶的解析方式,包括一組接口和類1) SAX解析原理以事件驅(qū)動(dòng)的方式解析,即找開始結(jié)束標(biāo)簽的方式SAX的工作原理簡(jiǎn)單地說就是對(duì)文檔進(jìn)行順序掃描,當(dāng)掃描到文檔(document)開始與結(jié)束、元素(element)開始與結(jié)束、等地方時(shí)通知事件處理函數(shù),由事件處理函數(shù)做相應(yīng)動(dòng)作,然后繼續(xù)同樣的掃描,直至文檔結(jié)束。所以有兩個(gè)關(guān)鍵點(diǎn):順序掃描,事件處理函數(shù)2) 案例:解析指定文件(標(biāo)簽無屬性),并將文件中的信息存放到list中-需要先創(chuàng)建XML文件3) 案例:解析指定文件(根標(biāo)簽有屬性),并將文件中的信息存放到l

13、ist中假設(shè):我們給每個(gè)phone加一個(gè)id屬性,那么在解析根節(jié)點(diǎn)的時(shí)候,就需要獲取到id信息并賦值給對(duì)象。4、 PULL解析 在android系統(tǒng)中,很多資源文件中,很多都是xml格式,在android系統(tǒng)中解析這些xml的方式,是使用pul解析器進(jìn)行解析的,它和sax解析一樣,也是采用事件驅(qū)動(dòng)進(jìn)行解析的,同時(shí),由于android內(nèi)核已經(jīng)內(nèi)嵌了pull,所以我們不需要添加第三方的jar包來支持pull。1) 案例:解析XML文件(不帶屬性)首先,需要jar包:具體實(shí)現(xiàn)步驟如下:基本上跟sax的解析思路是一樣的。幾個(gè)關(guān)鍵的方法強(qiáng)調(diào)下:獲取其狀態(tài)碼,區(qū)分現(xiàn)在是哪個(gè)事件源(文檔開頭,文檔結(jié)尾,標(biāo)簽開頭,標(biāo)簽結(jié)尾)獲取標(biāo)簽名稱獲取標(biāo)簽的文本內(nèi)容讓指針繼續(xù)往下解析下一個(gè)事件源2) 案例:解析XML文件(帶屬性)3) PU

溫馨提示

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