解析之前松忍,我們可以先搭建個(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文件
(一)關(guān)于 解析XML格式數(shù)據(jù)
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門(mén)赖晶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)律适,“玉大人,你說(shuō)我怎么就攤上這事遏插∥婊撸” “怎么了?”我有些...
- 文/不壞的土叔 我叫張陵胳嘲,是天一觀的道長(zhǎng)厂僧。 經(jīng)常有香客問(wèn)我,道長(zhǎng)了牛,這世上最難降的妖魔是什么颜屠? 我笑而不...
- 正文 為了忘掉前任,我火速辦了婚禮鹰祸,結(jié)果婚禮上甫窟,老公的妹妹穿的比我還像新娘。我一直安慰自己蛙婴,他們只是感情好粗井,可當(dāng)我...
- 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般浇衬。 火紅的嫁衣襯著肌膚如雪呆瞻。 梳的紋絲不亂的頭發(fā)上,一...
- 那天径玖,我揣著相機(jī)與錄音,去河邊找鬼颤介。 笑死梳星,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的滚朵。 我是一名探鬼主播冤灾,決...
- 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼辕近!你這毒婦竟也來(lái)了韵吨?” 一聲冷哼從身側(cè)響起,我...
- 序言:老撾萬(wàn)榮一對(duì)情侶失蹤移宅,失蹤者是張志新(化名)和其女友劉穎归粉,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體漏峰,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡糠悼,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了浅乔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片倔喂。...
- 正文 年R本政府宣布悼枢,位于F島的核電站,受9級(jí)特大地震影響脾拆,放射性物質(zhì)發(fā)生泄漏萧芙。R本人自食惡果不足惜,卻給世界環(huán)境...
- 文/蒙蒙 一假丧、第九天 我趴在偏房一處隱蔽的房頂上張望双揪。 院中可真熱鬧,春花似錦包帚、人聲如沸渔期。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)疯趟。三九已至拘哨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間信峻,已是汗流浹背倦青。 一陣腳步聲響...
- 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像踢步,于是被迫代替她去往敵國(guó)和親癣亚。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
推薦閱讀更多精彩內(nèi)容
- 1 XML解析No29 【 XML:可拓展標(biāo)記語(yǔ)言获印,語(yǔ)言和HTML類(lèi)似述雾,也是一種標(biāo)記語(yǔ)言。 特點(diǎn):標(biāo)記是自定義...
- **2014真題Directions:Read the following text. Choose the be...
- 1. XML解析的兩種方式 服務(wù)器返回的XML數(shù)據(jù)如下 1.1使用Pull方式解析XML數(shù)據(jù) 使用Pull解析兼丰,首...
- Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理玻孟,服務(wù)發(fā)現(xiàn),斷路器鳍征,智...