(一)關(guān)于 解析XML格式數(shù)據(jù)

解析之前松忍,我們可以先搭建個(gè)本地的Web服務(wù)器,使用Apache服務(wù)器(下載地址:百度即有提供下載),安裝完成后在htdocs目錄下新建一個(gè)get_data.xml文件椅野,這時(shí)在瀏覽器訪問(wèn)127.0.0.1/get_data.xml這個(gè)網(wǎng)址,就能出現(xiàn)你新建文件的內(nèi)容钞钙。
解析XML數(shù)據(jù)常用的有兩種解析方式:Pull解析和SAX解析鳄橘。(一)Pull解析XmlPullParserFactory xmlPullParserFactory=XmlPullParserFactory.newInstance(); XmlPullParser xmlPullParser=xmlPullParserFactory.newPullParser();
首先獲取到XMLPullParserFactory的實(shí)例(newInstance()),并借助這個(gè)實(shí)例得到XMLPullParser的對(duì)象(newPullParser())芒炼,接著通過(guò)xmlPullParser.setInput(new StringReader(xmlData))開(kāi)始解析服務(wù)器返回的數(shù)據(jù)瘫怜,解析過(guò)程:通過(guò)getEventType()得到當(dāng)前解析事件(就是某個(gè)結(jié)點(diǎn)!本刽!)鲸湃,int eventType=xmlPullParser.getEventType(); String id="";String name="";String version=""; while(eventType!=XmlPullParser.END_DOCUMENT){ String nodename=xmlPullParser.getName(); switch(eventType){//開(kāi)始解析某個(gè)結(jié)點(diǎn) case XmlPullParser.START_TAG: if("id".equals(nodename)){ id=xmlPullParser.nextText();//nextText()獲取某個(gè)結(jié)點(diǎn)的具體內(nèi)容 }else if("name".equals(nodename)){ name=xmlPullParser.nextText(); }else if("version".equals(nodename)){ version=xmlPullParser.nextText();} break; //完成某個(gè)結(jié)點(diǎn)的解析 case XmlPullParser.END_TAG: if("app".equals(nodename)){ Log.d("MainActivity"," id is "+id); Log.d("MainActivity"," name is "+name); Log.d("MainActivity"," version is "+version);} break; default: break;} eventType=xmlPullParser.next();//調(diào)用next()獲取下一個(gè)結(jié)點(diǎn)!W釉ⅰ暗挑! }}catch(Exception e){e.printStackTrace();}
(二)SAX解析:新建一個(gè)ContentHandler類(lèi)繼承DefaultHandler類(lèi),并重寫(xiě)部分方法:1斜友、startDocument()(官方文檔Receive notification of the beginning of the document):每處理一個(gè)XML文檔都會(huì)響應(yīng)一次炸裆。所以這個(gè)方法里可以寫(xiě)需要初始化的代碼。2鲜屏、startElement(String uri,String localName,String qName,Attributes attributes)(官方文檔Receive notification of the beginning of the element):這是處理每個(gè)結(jié)點(diǎn)所觸發(fā)的方法烹看,通過(guò)這個(gè)方法你可以直接當(dāng)前處理的節(jié)點(diǎn)的名稱以及屬性国拇。3、characters(char[] ch,int start,int length)(官方文檔Receive notification of character data inside an element.):會(huì)在獲取結(jié)點(diǎn)中的內(nèi)容的時(shí)候調(diào)用惯殊,但該方法不會(huì)告訴你文本所屬的標(biāo)簽酱吝。4、endElement(String uri,String localName,String qName)(官方文檔Receive notification of the end of an element.): 遇到一個(gè)結(jié)點(diǎn)的結(jié)束標(biāo)簽時(shí)土思,將會(huì)出發(fā)這個(gè)方法务热,并且會(huì)傳遞結(jié)束標(biāo)簽的名稱。5己儒、endDocument()(官方文檔Receive notification of the end of the document.)崎岂;完成整個(gè)XML解析時(shí)調(diào)用。而在MainActivity中先建了一個(gè)SAXParserFactory的對(duì)象(newInstance()),再獲取到XMLReader的對(duì)象(SAXParserFactory.newSAXParser().getXMLReader()),接著將我們寫(xiě)好的ContentHandler的實(shí)例設(shè)置到XMLReader中(xmlReader.setContentHandlet(ContentHandler handler)(Allow an application to register a content event handler),再調(diào)用xmlReader.parse(InputSource input)解析XML文件

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末闪湾,一起剝皮案震驚了整個(gè)濱河市该镣,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌响谓,老刑警劉巖损合,帶你破解...
    沈念sama閱讀 222,590評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異娘纷,居然都是意外死亡嫁审,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)赖晶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)律适,“玉大人,你說(shuō)我怎么就攤上這事遏插∥婊撸” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,301評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵胳嘲,是天一觀的道長(zhǎng)厂僧。 經(jīng)常有香客問(wèn)我,道長(zhǎng)了牛,這世上最難降的妖魔是什么颜屠? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,078評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮鹰祸,結(jié)果婚禮上甫窟,老公的妹妹穿的比我還像新娘。我一直安慰自己蛙婴,他們只是感情好粗井,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般浇衬。 火紅的嫁衣襯著肌膚如雪呆瞻。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,682評(píng)論 1 312
  • 那天径玖,我揣著相機(jī)與錄音,去河邊找鬼颤介。 笑死梳星,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的滚朵。 我是一名探鬼主播冤灾,決...
    沈念sama閱讀 41,155評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼辕近!你這毒婦竟也來(lái)了韵吨?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 40,098評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤移宅,失蹤者是張志新(化名)和其女友劉穎归粉,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體漏峰,經(jīng)...
    沈念sama閱讀 46,638評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡糠悼,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了浅乔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片倔喂。...
    茶點(diǎn)故事閱讀 40,852評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖靖苇,靈堂內(nèi)的尸體忽然破棺而出席噩,到底是詐尸還是另有隱情,我是刑警寧澤贤壁,帶...
    沈念sama閱讀 36,520評(píng)論 5 351
  • 正文 年R本政府宣布悼枢,位于F島的核電站,受9級(jí)特大地震影響脾拆,放射性物質(zhì)發(fā)生泄漏萧芙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評(píng)論 3 335
  • 文/蒙蒙 一假丧、第九天 我趴在偏房一處隱蔽的房頂上張望双揪。 院中可真熱鬧,春花似錦包帚、人聲如沸渔期。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,674評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)疯趟。三九已至拘哨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間信峻,已是汗流浹背倦青。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,788評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留盹舞,地道東北人产镐。 一個(gè)月前我還...
    沈念sama閱讀 49,279評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像踢步,于是被迫代替她去往敵國(guó)和親癣亚。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • 1 XML解析No29 【 XML:可拓展標(biāo)記語(yǔ)言获印,語(yǔ)言和HTML類(lèi)似述雾,也是一種標(biāo)記語(yǔ)言。 特點(diǎn):標(biāo)記是自定義...
    征程_Journey閱讀 1,656評(píng)論 0 9
  • **2014真題Directions:Read the following text. Choose the be...
    又是夜半驚坐起閱讀 9,585評(píng)論 0 23
  • 1. XML解析的兩種方式 服務(wù)器返回的XML數(shù)據(jù)如下 1.1使用Pull方式解析XML數(shù)據(jù) 使用Pull解析兼丰,首...
    figure_ai閱讀 414評(píng)論 0 2
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理玻孟,服務(wù)發(fā)現(xiàn),斷路器鳍征,智...
    卡卡羅2017閱讀 134,715評(píng)論 18 139
  • Pull解析方式比如解析以下一段xml字符串: 示例代碼:
    Chebyshev閱讀 5,016評(píng)論 0 3