下周備課煙職13級android高級-t2_第1頁
下周備課煙職13級android高級-t2_第2頁
下周備課煙職13級android高級-t2_第3頁
下周備課煙職13級android高級-t2_第4頁
下周備課煙職13級android高級-t2_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第二章Android網(wǎng)絡(luò)處理(二)2本章目標(biāo)Android中解析XML數(shù)據(jù)3預(yù)習(xí)檢查提問1、什么是XML,XML文檔結(jié)構(gòu),何為格式良好的XML文件。2、Java中的DOM方式解析XML。3、Java中的SAX方式解析XML。4DOM解析XMLDOM節(jié)點(diǎn)樹5DOM解析XML父子節(jié)點(diǎn)關(guān)系6DOM解析XML7實(shí)現(xiàn)代碼//通過工廠創(chuàng)建Dom解析對象實(shí)例DocumentBuilderdb=factory.newDocumentBuilder();//將xml文件輸入流交給Dom解析對象進(jìn)行解析,并將Dom樹返回Documentdocument=db.parse(getResources().getAssets().open("test.xml"));//通過Dom樹得到xml文件根元素ElementrootElement=document.getDocumentElement();//通過根元素獲取下面所有名字為case節(jié)點(diǎn)NodeListnodeList=rootElement.getElementsByTagName("case");StringBuildersb=newStringBuilder();//遍歷case節(jié)點(diǎn)for(inti=0;i<nodeList.getLength();i++){ElementcaseElement=(Element)nodeList.item(i);//獲取case下所有的子節(jié)點(diǎn)NodeListcaseChildList=caseElement.getChildNodes();//遍歷所有子節(jié)點(diǎn)for(inty=0;y<caseChildList.getLength();y++){8SAX解析XML9實(shí)現(xiàn)代碼//自定義SAX解析類

classSaxHandlerextendsDefaultHandler{ @Override publicvoidstartDocument()throwsSAXException{ super.startDocument(); } @Override publicvoidendDocument()throwsSAXException{ super.endDocument(); } @Override publicvoidstartElement(Stringuri,StringlocalName,StringqName, Attributesattributes)throwsSAXException{//解析代碼 } @Override publicvoidendElement(Stringuri,StringlocalName,StringqName) throwsSAXException{ //解析代碼 } @Override publicvoidcharacters(char[]ch,intstart,intlength) throwsSAXException{//解析代碼 }}}10實(shí)現(xiàn)代碼//獲取自定義解析器SaxHandlerhandler=newSaxHandler();//獲取解析工廠類

SAXParserFactoryfactory=SAXParserFactory.newInstance();//定義包裝XMLReader實(shí)現(xiàn)類的API。SAXParserparser=factory.newSAXParser();//用于使用回調(diào)讀取XML文檔的接口。XMLReaderreader=parser.getXMLReader();//應(yīng)用程序注冊內(nèi)容事件處理程序reader.setContentHandler(handler);//解析XML文檔。reader.parse(newInputSource(getResources().getAssets().open("test.xml")));11PULL解析XML12實(shí)現(xiàn)代碼//獲取XmlPullParser實(shí)例XmlPullParserparser=Xml.newPullParser();StringBuildersb=newStringBuilder();//將xml輸入流交給XmlPullParser處理parser.setInput(getResources().getAssets().open("test.xml"),"UTF-8");//獲取第一個(gè)事件intevent=parser.getEventType();while(event!=XmlPullParser.END_DOCUMENT){switch(event){//判斷當(dāng)前事件是否是文檔開始事件caseXmlPullParser.START_DOCUMENT:break;//判斷當(dāng)前事件是否是標(biāo)簽元素開始事件caseXmlPullParser.START_TAG:......caseXmlPullParser.END_TAG:break;}//不斷產(chǎn)生新的事件,當(dāng)事件為文檔結(jié)束的時(shí)候,退出循環(huán)。event=parser.next();}13三種解析XML小結(jié)三種解析XML共同點(diǎn):都需要獲取一種解析器的實(shí)例。比如DOM,SAX方式是通過工廠模式獲取解析器,而PULL方式是通過android平臺封裝的工具類獲取解析器的實(shí)例。將要解析的XML文檔交給解析器處理。按照各自的方式特點(diǎn)進(jìn)行解析。比如DOM解析DOM樹,SAX按照自定義的事件處理方式進(jìn)行解析,PULL按照自己的事件處理特點(diǎn)進(jìn)行解析。14三種解析XML小結(jié)三種方式的不同主要是解析XML理念不同:DOM是DOM樹的方式,SAX是事件流方式,而XPP(XMLPullParsing)是streaming(incremental)的方式。DOM和SAX在解釋XML時(shí),是不允許中斷的;而XPP是可以在任何時(shí)候中斷,并且允許重新開始。XPP在解釋XML時(shí)會忽略某些部分,

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論