




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、XML解析1、 XML基礎1) 什么是XMLl XML是指可擴展標記語言(eXtensible Markup Language),它也是一種標記語言,很類似HTML。它被設計的宗旨是存儲數據,而非顯示數據。l Html展示數據l XML標簽沒有被預定義,需要用戶自行定義標簽。l XML技術是W3C組織(World Wide Web Consortium萬維網聯盟)發布的,目前遵循的是W3C組織于2000年發布的XML1.0規范。l XML被廣泛認為是繼Java之后在Internet上最激動人心的新技術。l W3CSchool(入門級)2) XML常見應用l 用于數據存儲l 用在軟件配置,用于描
2、述模塊之間的關系(如果著名的Struts、Spring和Hibernate都是基于XML作為配置文件的-SSH)android都是xml。 圖形界面都是用的xmll 在一個軟件系統中,通過XML配置文件可以提高系統的靈活性。即程序的行為是通過XML文件來配置的,而不是硬編碼。l XML是一種通用的數據交換格式。(跨平臺)2、 XML語法語法較多,建議先直接上手寫案例,成功之后再回來當回顧學習用一個XML文件主要包括以下幾個部分:l 文檔聲明l 元素l 屬性l 注釋 l 實體引用及CDATA區 l 處理指令(PI:Processing Instruction)l Xml約束 1) 文檔聲明l 在
3、編寫XML文檔時,需要先使用文檔聲明來聲明XML文檔。且必須出現在文檔的第一行。(前面注釋都不允許) 最簡單的語法:<?xml version=“1.0”?>l 用encoding屬性說明文檔所使用的字符編碼。保存在磁盤上的文件編碼要與聲明的編碼一致。 如:<?xml version=“1.0” encoding=“utf-8”?>l 用standalone屬性說明文檔是否獨立,即是否依賴其他文檔。 如:<?xml version=“1.0” encoding=“utf-8” standalone=“yes”?>2) 元素l XML元素指XML文件中出現的標
4、簽。一個標簽分為起始和結束標簽(不能省略)。一個標簽有如下幾種書寫形式:n 包含標簽主體:<mytag>some content</mytag> n 不含標簽主體:<mytag />(有時也叫空標簽)n 一個標簽中可以嵌套若干子標簽,但所有標簽必須合理的嵌套,不允許有交叉嵌套。n <mytag1><mytag2></mytag1></mytag2> l 一個XML文檔必須有且僅有一個根標簽,其他標簽都是這個根標簽的子標簽或孫標簽。l 對于XML標簽中出現的所有空格和換行,XML解析程序都會當作標簽內容進行處理。
5、例如:下面兩段內容的意義是不一樣的。<網址> </網址><網址>ww.1000phone.copm</網址> -DOM解析l 由于在XML中,空格和換行都作為原始內容被處理,所以,在解析XML文件時要特殊處理下,繞過這些空格和換行符。l 元素命名規范:一個XML元素可以包含字母、數字以及其它一些可見字符,但必須遵守下面的一些規范n 區分大小寫,例如,<A>和<a>是兩個不同的標記。(與java、c變量命名一致)n 不能以數字或"_" (下劃線)開頭。n 不能以xml(或XML、或Xml 等)開頭。(xm
6、l 為關鍵字,所以不能重復)n 不能包含空格。n 名稱中間不能包含冒號(:)。n 一句話:像個正常人一樣去寫名稱就行,不用關鍵字3) 屬性l 一個元素可以有多個屬性,每個屬性都有它自己的名稱和取值,例如:<mytag name=“value” />l 屬性值一定要用引號(單引號或雙引號)引起來。l 屬性名稱的命名規范與元素的命名規范相同l 元素中屬性沒有順序要求,但是不準重復。l 在XML技術中,標簽屬性所代表的信息也可以被改成用子元素的形式來描述4) 注釋l XML中的注釋語法為:<!-這是注釋->l 注意:l XML聲明之前不能有注釋(xml聲明必須放在文檔第一行)
7、l 注釋不能嵌套5) 實體引用及CDATA區實體引用l 在 XML 中,一些字符擁有特殊的意義。如果你把字符 "<" 放在 XML 元素中,會發生錯誤,這是因為解析器會把它當作新元素的開始。如下這樣會產生 XML 錯誤:<message>if salary < 1000 then</message>l 為了避免此類錯誤,需要把字符 "<" 替換為實體引用,就像這樣:<message>if salary < 1000 then</message>在 XML 中有 5 個預定義的
8、實體引用:< <小于>>大于&&和號''省略號""引號l 注意:嚴格地講,在 XML 中僅有字符 "<"和"&" 是非法的。省略號、引號和大于號是合法的,但是把它們替換為實體引用是個好的習慣。CDATA區術語 CDATA 指的是不應由 XML 解析器進行解析的文本數據(Unparsed Character Data)。在 XML 元素中,"<" 和 "&" 是非法的。&q
9、uot;<" 會產生錯誤,因為解析器會把該字符解釋為新元素的開始。"&" 也會產生錯誤,因為解析器會把該字符解釋為字符實體的開始。某些文本,比如 JavaScript 代碼,包含大量 "<" 或 "&" 字符。為了避免錯誤,可以將腳本代碼定義為 CDATA。CDATA 部分中的所有內容都會被解析器忽略。CDATA 部分由 "<!CDATA" 開始,由 ">" 結束:6) 處理指令(了解即可)l 處理指令,簡稱PI(Processing Instr
10、uction)。l 作用:用來指揮軟件如何解析XML文檔。l 語法:必須以“<?”作為開頭,以“?>”作為結尾。l 常用處理指令:n XML聲明:<?xml version=“1.0” encoding=“GB2312”?>n xml-stylesheet指令:作用:指示XML文檔所使用的CSS樣式XSLT。7) XML約束(了解即可)為什么需要約束:l XML都是用戶自定義的標簽,若出現小小的錯誤,軟件程序將不能正確地獲取文件中的內容而報錯。什么是XML約束:l 約束文檔定義了在XML中允許出現的元素名稱、屬性及元素出現的順序等等。l 在XML技術里,可以編寫一個文檔
11、來約束一個XML文檔的書寫規范,這稱之為XML約束。l 常用的約束技術XML DTD, XML Schema l 作為普通工程師,一般是使用別人的約束文件,而不會自己去寫約束。例如使用SSH框架開始時用到的xml文件,均要受框架的提供的xml的約束文件的約束3、 SAX解析XML解析方式主要有:DOM(文檔對象模型):將整個文件以樹的結構存儲到內存中,適合小文件,程序可讀性高。Dom4jSAX(基于事件流的解析):省內存,程序可讀性相比上述較差。PULL(Android自帶解析器):也是基于事件流的解析本次,我們只學習SAX和PULL兩種方式正式來學習SAX解析Simple APIs for
12、XML,XML簡單應用程序接口,在javax.xml.parsers包中,SAX解析是JDK自帶的解析方式,包括一組接口和類1) SAX解析原理以事件驅動的方式解析,即找開始結束標簽的方式SAX的工作原理簡單地說就是對文檔進行順序掃描,當掃描到文檔(document)開始與結束、元素(element)開始與結束、等地方時通知事件處理函數,由事件處理函數做相應動作,然后繼續同樣的掃描,直至文檔結束。所以有兩個關鍵點:順序掃描,事件處理函數2) 案例:解析指定文件(標簽無屬性),并將文件中的信息存放到list中-需要先創建XML文件3) 案例:解析指定文件(根標簽有屬性),并將文件中的信息存放到l
13、ist中假設:我們給每個phone加一個id屬性,那么在解析根節點的時候,就需要獲取到id信息并賦值給對象。4、 PULL解析 在android系統中,很多資源文件中,很多都是xml格式,在android系統中解析這些xml的方式,是使用pul解析器進行解析的,它和sax解析一樣,也是采用事件驅動進行解析的,同時,由于android內核已經內嵌了pull,所以我們不需要添加第三方的jar包來支持pull。1) 案例:解析XML文件(不帶屬性)首先,需要jar包:具體實現步驟如下:基本上跟sax的解析思路是一樣的。幾個關鍵的方法強調下:獲取其狀態碼,區分現在是哪個事件源(文檔開頭,文檔結尾,標簽開頭,標簽結尾)獲取標簽名稱獲取標簽的文本內容讓指針繼續往下解析下一個事件源2) 案例:解析XML文件(帶屬性)3) PU
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 零售業店鋪顧客流量分析與營銷策略考核試卷
- 針織品銷售區域布局優化考核試卷
- 重疾險產品設計
- 胸痛常見疾病及診斷
- 班主任六一匯報工作總結
- 沖管操作與感染防控要點
- 妊高征的急救處理
- 中醫外科疾病診療概要
- 事故隱患內部報告獎勵制度模板三
- 港股6月IPO火熱給港股投資帶來更多選擇
- 2025年度飛機買賣及航空法律咨詢服務合同4篇
- 工程測量學知到智慧樹章節測試課后答案2024年秋山東科技大學
- 2025年云南省社會科學院中國(昆明)南亞東南亞研究院招聘高層次人才7人歷年高頻重點提升(共500題)附帶答案詳解
- DB33-T 1401-2024 公共機構合同能源管理實施規范
- 產褥期膿毒血癥護理查房
- 英語名詞所有格課件
- 公共倫理復習要點
- 管道打壓、吹掃方案
- 石頭雕刻合同范例
- 《個人所得稅法解讀》課件
- 《產品檢驗方法培訓》課件
評論
0/150
提交評論