xml 解析

今天電面又被虐了舔示,綜合上一次的面試碟婆,反思一下,雖然最近在準備面試惕稻,但是對很多東西都不思其解竖共,深度不夠。虐得我對生活喪失信心俺祠,要好好準備基礎(chǔ)公给。

其中問到xml的解析方式及其原理,原理蜘渣?淌铐? 一臉蒙蔽。蔫缸。

Android xml解析常用方式:
java支持的兩種是SAX腿准、DOM兩種,Android內(nèi)置的Pull解析

  1. SAX (Simple API for XML) 是以從上往下的事件處理模式為核心拾碌,不需要讀入整個文檔吐葱,而是邊讀邊解析,所以無法回退校翔。事件驅(qū)動也就是回調(diào)的方式弟跑,實現(xiàn)接口。這里使用的是SAX2

(1) 文檔解析開始時調(diào)用startDocument()防症,進行一些預(yù)處理

(2) 遇到<元素標簽> 孟辑,調(diào)用startElements(String uri, String localname, String qname, Attributes attrs)
uri是命名空間,localname是前綴蔫敲,qname是標簽名字饲嗽,atts是屬性集合

    <website id = "1">
      xmlns:baidu="http://www.baidu.com">
    <baidu:website baidu:blog="hi.baidu.com">百度</baidu:website>  
    </website>

從上面可以看出兩個節(jié)點:<website> <baidu:website>
對于 website中,uri為null奈嘿,localname為website喝噪,qname也為website,可從attrs獲取和getQname(0)為“id”和getValue(0)為id的值;

對于baidu:website中指么,uri為“http:// www.baidu.com"酝惧,localname為”website“榴鼎,qname為”baidu:website“
其中attrs中也可以獲取getLocalname(0)為”blog“,getQname(0)為”baidu:blog“, getURI(0)為"http:// www.baidu.com"晚唇,getValue(0)為"hi.baidu.com"

(3) 讀到元素頭部后巫财,要獲取具體的值,調(diào)用charatcter(char[] ch, int start, int length)
String content = new String(ch,start,length);

(4)遇到結(jié)尾元素哩陕,endElement(String uri, String localName, String qName)

  1. DOM
    是將整個文檔讀入內(nèi)存平项,最后形成節(jié)點樹,好處是能夠重復(fù)讀悍及,還能實現(xiàn)增刪改成闽瓢,不足是當(dāng)文檔很大將會占用很大的內(nèi)存空間,只適合較小的文檔

  2. PULL方式:運行方式和SAX類似也是基于事件驅(qū)動心赶。但是pull讀取xml文件后觸發(fā)相應(yīng)的事件調(diào)用方法返回的是數(shù)字扣讼,而且對事件觸發(fā)還需要由自己實現(xiàn),不像SAX監(jiān)聽到元素的結(jié)束缨叫,可以隨時停止椭符。

XmlPullParser parser =Xml.newPullParser();  //獲取解析器
parser.setInput(is, "UTF-8");// 輸入流 、編碼方式
int eventType = parser.getEventType();  
while (eventType != XmlPullParser.END_DOCUMENT) {
    switch (eventType) {  
        case XmlPullParser.START_DOCUMENT:  
            //文件開始
            break;
        case XmlPullParser.START_TAG: 
            parser.getName();//獲取前指向的元素名稱
            parser.getAttributeValue(int i);//獲取當(dāng)前元素的屬性值
            parser.nextText());//獲取當(dāng)前元素的下一個文本節(jié)點的值  
            break;  
        case XmlPullParser.END_TAG: 
            break;
    }
    eventType = parser.next();  
}

參考文章:
http://blog.csdn.net/wssiqi/article/details/8239357
http://blog.csdn.net/liuhe688/article/details/6415593

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末耻姥,一起剝皮案震驚了整個濱河市销钝,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌琐簇,老刑警劉巖蒸健,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異婉商,居然都是意外死亡纵装,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進店門据某,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人诗箍,你說我怎么就攤上這事癣籽。” “怎么了滤祖?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵筷狼,是天一觀的道長。 經(jīng)常有香客問我匠童,道長埂材,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任汤求,我火速辦了婚禮俏险,結(jié)果婚禮上严拒,老公的妹妹穿的比我還像新娘。我一直安慰自己竖独,他們只是感情好裤唠,可當(dāng)我...
    茶點故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著莹痢,像睡著了一般种蘸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上竞膳,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天航瞭,我揣著相機與錄音,去河邊找鬼坦辟。 笑死刊侯,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的长窄。 我是一名探鬼主播滔吠,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼挠日!你這毒婦竟也來了疮绷?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤嚣潜,失蹤者是張志新(化名)和其女友劉穎冬骚,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體懂算,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡只冻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了计技。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片喜德。...
    茶點故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖垮媒,靈堂內(nèi)的尸體忽然破棺而出舍悯,到底是詐尸還是另有隱情,我是刑警寧澤睡雇,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布萌衬,位于F島的核電站,受9級特大地震影響它抱,放射性物質(zhì)發(fā)生泄漏秕豫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一观蓄、第九天 我趴在偏房一處隱蔽的房頂上張望混移。 院中可真熱鬧祠墅,春花似錦、人聲如沸沫屡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽沮脖。三九已至金矛,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間勺届,已是汗流浹背驶俊。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留免姿,地道東北人饼酿。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像胚膊,于是被迫代替她去往敵國和親故俐。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,851評論 2 361

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

  • 1 XML解析No29 【 XML:可拓展標記語言紊婉,語言和HTML類似药版,也是一種標記語言。 特點:標記是自定義...
    征程_Journey閱讀 1,656評論 0 9
  • 一喻犁、緒論 上周工作需要了解項目的一些大體內(nèi)容槽片,結(jié)果在xml解析這一塊看的迷迷糊糊的,所以在這里把學(xué)習(xí)到xm...
    cao健強閱讀 4,046評論 1 7
  • 1. XML總結(jié) 1.1. XML簡介 XML : 可擴展的標記語言肢础。(和HTML非常類似的) 可擴展的还栓。 自定義...
    Ethan_Walker閱讀 3,045評論 0 12
  • 一、iOS 4種JSON數(shù)據(jù)解析方法詳解 2013年09月10日? 綜合? 共 9124字? 字號小中大?評論關(guān)閉...
    lilinjianshu閱讀 2,064評論 0 2
  • 項目地址:https://github.com/liaozhoubei/HttpAndParse XML是一種非常...
    寶塔山上的貓閱讀 4,091評論 1 9