版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、XML解析、XML基礎(chǔ)1)什么是XMLwnl的作用: 存儲數(shù)據(jù) 可用于跨甲臺數(shù)據(jù)交Li(linux )址一飽放據(jù)資源:Window)jFXMLJtntxt又杵zhangn|20|13363534txt交件21WB webJl曲h框架 白nckEM配國文件(特點(diǎn):存錯(cuò)內(nèi)容少解折簡單可圖i差)4 xmisn (特點(diǎn):可彌輕,彌清晰存儲內(nèi)容夢解析麻煩v 5tudent5 studentszhang5an用encoding屬性說明文檔所使用的字符編碼。保存在磁盤上的文件編碼要 與聲明的編碼一致。女口: 用standalone屬性說明文檔是否獨(dú)立,即是否依賴其他文檔。女口: 2)兀素XML元素指XML文
2、件中出現(xiàn)的標(biāo)簽。一個(gè)標(biāo)簽分為起始和結(jié)束標(biāo)簽(不能省 略)。一個(gè)標(biāo)簽有如下幾種書寫形式:包含標(biāo)簽主體:some conten t不含標(biāo)簽主體:vmytag /(有時(shí)也叫空標(biāo)簽)一個(gè)標(biāo)簽中可以嵌套若干子標(biāo)簽,但所有標(biāo)簽必須合理的嵌套,不允許有交叉嵌套。vmytag1vmytag2v/mytag1x/mytag2一個(gè)XML文檔必須有且僅有一個(gè)根標(biāo)簽,其他標(biāo)簽都是這個(gè)根標(biāo)簽的子標(biāo)簽 或?qū)O標(biāo)簽。對于XMLB簽中出現(xiàn)的所有空格和換行,XML解析程序都會當(dāng)作標(biāo)簽內(nèi)容進(jìn)行處理。例如:下面兩段內(nèi)容的意義是不一樣的ww.lOOOph on e.copmww.1000phone.copm -DOM 解析由于在XML
3、中,空格和換行都作為原始內(nèi)容被處理,所以,在解析XML文件時(shí)要特殊處理下,繞過這些空格和換行符。元素命名規(guī)范:一個(gè)XMLS素可以包含字母、數(shù)字以及其它一些可見字符, 但必須遵守下面的一些規(guī)范區(qū)分大小寫,例如,和0是兩個(gè)不同的標(biāo)記。(與java、c變量命 名一致)不能以數(shù)字或_(下劃線)開頭。不能以xml(或XML或Xml等)開頭。(xml為關(guān)鍵字,所以不能重復(fù)) 不能包含空格。名稱中間不能包含冒號(:)。一句話:像個(gè)正常人一樣去寫名稱就行,不用關(guān)鍵字3)屬性一個(gè)元素可以有多個(gè)屬性,每個(gè)屬性都有它自己的名稱和取值,例如:屬性值一定要用引號(單引號或雙引號)引起來。屬性名稱的命名規(guī)范與元素的命名規(guī)
4、范相同元素中屬性沒有順序要求,但是不準(zhǔn)重復(fù)。行處理。例如:下面兩段內(nèi)容的意義是不一樣的 。ww.1000phone.copmww.1000phone.copm -DOM 解析由于在XML中,空格和換行都作為原始內(nèi)容被處理,所以,在解析XML文件時(shí)要特殊處理下,繞過這些空格和換行符。元素命名規(guī)范:一個(gè)XMLS素可以包含字母、數(shù)字以及其它一些可見字符, 但必須遵守下面的一些規(guī)范區(qū)分大小寫,例如,和0是兩個(gè)不同的標(biāo)記。(與java、c變量命 名一致)不能以數(shù)字或 _ ( 下劃線)開頭。不能以xml(或XML或Xml等)開頭。(xml為關(guān)鍵字,所以不能重復(fù)) 不能包含空格。名稱中間不能包含冒號( :
5、)。 一句話:像個(gè)正常人一樣去寫名稱就行,不用關(guān)鍵字3)屬性一個(gè)元素可以有多個(gè)屬性, 每個(gè)屬性都有它自己的名稱和取值, 例如: 屬性值一定要用引號 (單引號或雙引號 )引起來。屬性名稱的命名規(guī)范與元素的命名規(guī)范相同元素中屬性沒有順序要求,但是不準(zhǔn)重復(fù)。&q uot;注意:嚴(yán)格地講,在XML中僅有字符和&是非法的。省略號、引號 和大于號是合法的,但是把它們替換為實(shí)體引用是個(gè)好的習(xí)慣。CDATZ區(qū)術(shù)語CDATA指的是不應(yīng)由XML解析器進(jìn)行解析的文本數(shù)據(jù)(Un parsedCharacter Data )。在XML元素中,和&是非法的。會產(chǎn)生錯(cuò)誤,因?yàn)榻馕銎鲿言撟址忉尀樾略氐拈_始。&也會產(chǎn)生錯(cuò)
6、誤,因?yàn)榻馕銎鲿言撟址忉尀樽址麑?shí)體的開始。某些文本,比如JavaScript代碼,包含大量或&字符。為了避免錯(cuò)誤, 可以將腳本代碼定義為CDATACDATA部分中的所有內(nèi)容都會被解析器忽略。CDATA部分由 結(jié)束:6)處理指令(了解即可)處理指令,簡稱 PI(Processing Instruction)。作用:用來指揮軟件如何解析XML文檔。語法:必須以“ ”作為結(jié)尾。常用處理指令:XML聲明:xml-stylesheet 指令:作用:指示 XML文檔所使用的CSS羊式XSLT7) XML約束(了解即可)為什么需要約束:XML都是用戶自定義的標(biāo)簽,若出現(xiàn)小小的錯(cuò)誤,軟件程序?qū)⒉荒苷_地獲
7、 取文件中的內(nèi)容而報(bào)錯(cuò)。什么是XML約束:約束文檔定義了在XML中允許出現(xiàn)的元素名稱、屬性及元素出現(xiàn)的順序等等。 在XML技術(shù)里,可以編寫一個(gè)文檔來約束一個(gè) XML文檔的書寫規(guī)范,這稱之 為XML約束。常用的約束技術(shù) XML DTD, XML Schema作為普通工程師,一般是使用別人的約束文件,而不會自己去寫約束。例如 使用SSHlf架開始時(shí)用到的xml文件,均要受框架的提供的xml的約束文件 的約束三、SAX解析XML解析方式主要有:DOM (文檔對象模型):將整個(gè)文件以樹的結(jié)構(gòu)存儲到內(nèi)存中,適合小文件,程序可讀性高。Dom4jDOMSAX (基于事件流的解析): 省內(nèi)存,程序可讀性相比上
8、述較差。PULL(Android自帶解析器):也是基于事件流的解析本次,我們只學(xué)習(xí)SAX和PULL兩種方式正式來學(xué)習(xí)SAX解析Simple APIs for XML , XML 簡單應(yīng)用程序接口,在 javax.xml.parsers包中,SAX 解析是JDK自帶的解析方式,包括一組接口和類1)SAX解析原理以事件驅(qū)動(dòng)的方式解析,即找開始結(jié)束標(biāo)簽的方式SAX的工作原理簡單地說就是對文檔進(jìn)行 順序掃描,當(dāng)掃描到文檔(document) 開始與結(jié)束、元素(element)開始與結(jié)束、等地方時(shí)通知事件處理函數(shù),由事 件處理函數(shù)做相應(yīng)動(dòng)作,然后繼續(xù)同樣的掃描,直至文檔結(jié)束。所以有兩個(gè)關(guān)鍵點(diǎn):順序掃描,
9、事件處理函數(shù)2)案例:解析指定文件(標(biāo)簽無屬性),并將文件中的信息存放到list中-需要先創(chuàng)建XML文件Jpubllc ClAdM JAXiIpublicveld main (St ring | j drgj) throw* PjuaerConfiiirat ion=:)tc-eptiorLrSAXKeepLion, roExpti on (U 2J5!SAKVfr az5AKPnrasxFactory factory -rFactory 1己*1710右血17& ;/ 別孫KofiSrSAXParsex pars*r - factory ;”廿 -i: - ,-; :r-/ jf !pars
10、er., parse (nw File ( non w -meII r handler) f|/矗甲睡舉Li a t phoxiea 二 hrsnd.Ler 專耳上匸丄赳 it ( j 常(Phoit-e p : phon3 J ( 呂 ya tens out ,p2rlnt n 彳尺乂Jpublic class MyHandler extends DefaultHandler private List li3t;privaString tag;private Phone phone;Overridepublic void startDocument() throws SAXException
11、 彳 f /初始化丄 list = new ArrayLi5t();Override*皐到開始標(biāo)簽* fpublic veld startELament(String uri, String localNamef String qNanierAttributes eittributes) throws SAXEKception H設(shè)遏當(dāng)前正在解版的粽簽,如果是對象悵標(biāo)簽.則Phone對象/有可遵齋竇垃置phfnE對魚的展性值虹決于phdiiE標(biāo)益有沒有屬性Systwni. out .println (uiui ; + uri 1*, loaalt3ame:ff + loca iName + r
12、 qName: + qttame);tag = qName;if (phoneequals(tg)phone = new Phone();J0Overrj.depublic void endElement: (String uri, String lo-calN且nm $ String qName-) throws SAXException Systemi out. print In (uri :+ uri + localName :+ local Name 4- n j qName ;H- qNa.me| ;/婦甲孚h魚銀勞弓覽束v/phonuA 將E舒胡農(nóng)奸的phonw對意tuA刮1 +,
13、并聃teg = M ;if phone,equals(qName)1T lac-ftdd(phone);Override/ * *用于處理文本節(jié)點(diǎn)*/public void characters (char chjr int start, int length) throws SAXException /先組裝字符串及完整的文本內(nèi)容String content = new stringch, start, length);/判斷是屬于當(dāng)前的哪個(gè)標(biāo)簽if (type亡玨口ala(tag)phone.3etType(content); else if ( prioe.equals(tag)phon
14、e.setPrice(Integer,prselnt(content); else if ( storerT 丄3 (tag) ) phone,setStore(Integer.parselnt(cont巳nt);public Li3t getList()return List;3)案例:解析指定文件(根標(biāo)簽有屬性),并將文件中的信息存放到list 中假設(shè):我們給每個(gè)phone加一個(gè)id屬性,那么在解析根節(jié)點(diǎn)的時(shí)候,就需要獲 取到id信息并賦值給對象。Ovftrr1 dppublic void artEltString uri f String 1 ocalNmin-, String qNmp
15、TAttributes attributes) throws SAXzxception t(ig qName; / ;錄二F h-臺if (phone M.equaIs(tag) pkone new Phone );x (at七 Jribiite;3 != null) / 判斷是舌有厲囹for (int i = 0; i ;i (id11 equals (name) )1phone芒匚工;1卩亂丄u包);)/如果還有直怛?qū)傩?,則事肓幾個(gè)1四、PULL解析在an droid系統(tǒng)中,很多資源文件中,很多都是xml格式,在an droid系統(tǒng)中 解析這些xml的方式,是使用pul解析器進(jìn)行解析的,它
16、和sax解析一樣,也是 采用事件驅(qū)動(dòng)進(jìn)行解析的,同時(shí),由于 an droid內(nèi)核已經(jīng)內(nèi)嵌了 pull,所以我們 不需要添加第三方的jar包來支持pull。1)案例:解析XML文件(不帶屬性)越1首先,需要jar包:具體實(shí)現(xiàn)步驟如下:kxml2-2.2.2.jarpublicFullPorserTesTl tpublic: b t&txc void na in (Str i( J a匸書tiE&w JCmlFuLLPa cd=rEKeeptionfIOEitcctLl&n /創(chuàng)jtpuiitafr的工1對銀JCrn 1 Fli 1 IPs ra er Fa o-t a ry a ct o ry
17、=1 Pu: IParserFactory .n m wT t a nee ();/ eJBpullFSXnlPuLLParscr parser - factory,newPu LParsr ,/ / 拒宦啓理旳、Wrphnns d xmlparser* 5tInput(naw ftleREider(N phares.工ml * H;H強(qiáng)雇承綣曲濡瑪,在幵苛細(xì)桿工寸祿在艷骯一近i nt event Type parser -Eve nt Type f;/ 誹環(huán)U!F.Liit list - null;Phor* null;while (eventType != XmlPullParser.EN
18、D_DOCUMENT) /獲取正在解析的標(biāo)簽窖String tag = parser,getName();switch (eventType) case XmlPullParser * START_DOCUMEMT:List = new ArrayList(); break;case Xml PullParser * START_TAG: if (phone11 mguaA呂(teg) )phone = new Phone(); else if (ntypeK.equals(tag)/ p&.匸呂ei: * nExtT&Kt;():荻取標(biāo)簽中的文本內(nèi)容 phone setType(parser
19、.nextText(); else if (price,T .equals (tag) )phone ” setPrice (Integer .parsein t (parser nextText (); else if (storeH equals(tag)phone * setstore(Integer.rselnt(parser.nextText(); break;case XmlPullParser.EMD TAGtif (phoneTT, equals (tag)list * add(phone);break;/繼續(xù)住下禪析,獲取下一個(gè)事伴我態(tài)碼 eventType = parser * next();for (Phone p : List) System,out)phone new Phone();rr/社諄懺簽1int count = parser
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025國際貿(mào)易合同
- 2025開關(guān)插座采購合同標(biāo)準(zhǔn)版
- 2025年度高科技企業(yè)公司股權(quán)協(xié)議書模板3篇
- 2025年度智能家居生態(tài)鏈消費(fèi)者協(xié)議3篇
- 2025年度新材料研發(fā)與應(yīng)用公司整體轉(zhuǎn)讓協(xié)議版3篇
- 2025年度醫(yī)療設(shè)備融資租賃服務(wù)合同模板3篇
- 2025年度農(nóng)村宅基地房買賣合同(農(nóng)村電商服務(wù)站建設(shè))
- 2025年度公租房合同(含租賃合同簽訂及備案費(fèi)用)3篇
- 2025年度環(huán)保處理設(shè)備專業(yè)維修與改造合同3篇
- 2025年度新能源汽車充電基礎(chǔ)設(shè)施合作項(xiàng)目協(xié)議書范本3篇
- 2024-2030年中國自然教育行業(yè)市場發(fā)展分析及前景趨勢與投資研究報(bào)告
- 12S522 混凝土模塊式排水檢查井
- 人感染禽流感診療方案(2024年版)
- 居家養(yǎng)老服務(wù)報(bào)價(jià)明細(xì)表
- 食材配送服務(wù)方案投標(biāo)方案(技術(shù)方案)
- 年產(chǎn)15000噸硫酸鋁項(xiàng)目環(huán)評報(bào)告表
- 2023-2024學(xué)年湖北省孝感市云夢縣八年級(上)期末英語試卷
- 2024年一級注冊建筑師理論考試題庫ab卷
- 2024二人合伙經(jīng)營項(xiàng)目簡單協(xié)議書
- 小學(xué)數(shù)學(xué)班級學(xué)情分析報(bào)告
- IMCA船舶隱患排查表
評論
0/150
提交評論