<?xml version="1.0" encoding="utf-8" ?>
張三23
1994-01-01
藍翔理髮
挖掘機false
大眾 小紅
201996-01-01
清華理髮
化妝true
實現步驟:
1.獲取xmlpullparse***ctory例項
xmlpullparse***ctory factory = xmlpullparse***ctory.newinstance();
2.借助xmlpullparse***ctory例項得到xmlpullparser物件,傳入xml資料xmlpullparser xmlpullparser = factory.newpullparser();
//呼叫xmlpullparser的setinput()方法傳入xml資料
xmlpullparser.setinput(new stringreader(xmldata));
3.通過geteventtype()獲得當前解析事件,在while迴圈中不斷解析,直到解析事件為xmlpullparser.end_document,解析結束int eventtype = xmlpullparser.geteventtype();
while (eventtype != xmlpullparser.end_document)
方法設計/**
* 使用pull的方式解析
* * @param xmldata xml資料
*/public static void par***mlwithpull(string xmldata) else if ("age".equals(nodename)) else if ("birthday".equals(nodename)) else if ("school".equals(nodename)) else if ("major".equals(nodename)) else if ("married".equals(nodename)) else if ("car".equals(nodename))
} catch (ioexception e)
break;
}case xmlpullparser.end_tag:
break;
}default:
break;
}try catch (ioexception e)
}} catch (xmlpullparserexception e)
}
解析步驟
1.建立saxparse***ctory物件
saxparse***ctory factory = saxparse***ctory.newinstance();
2.通過saxparse***ctory物件獲取xmlreaderxmlreader xmlreader = factory.newsaxparser().getxmlreader();
3.將自定義的contenthandler例項設定到xmlreader中,呼叫parse()方法,傳入xml資料開始解析contenthandler handler = new contenthandler();
//將contenthandler物件設定到xmlreader中
xmlreader.setcontenthandler(handler);
//開始執行解析
xmlreader.parse(new inputsource(new stringreader(xmldata)));
/** * 使用sax的方式解析xml
* * @param xmldata
*/public static void par***mlwithsax(string xmldata) catch (saxexception e) catch (parserconfigurationexception e) catch (ioexception e)
}/**
* sax解析輔助類
*/private static class contenthandler extends defaulthandler
/*** 開始解析某個節點時呼叫
** @param uri
* @param localname
* @param qname
* @param attributes
* @throws saxexception
*/@override
public void startelement(string uri, string localname, string qname, attributes attributes) throws saxexception
/*** 獲取節點的內容時呼叫
** @param ch
* @param start
* @param length
* @throws saxexception
*/@override
public void characters(char ch, int start, int length) throws saxexception else if ("age".equals(nodename)) else if ("birthday".equals(nodename)) else if ("school".equals(nodename)) else if ("major".equals(nodename)) else if ("married".equals(nodename)) else if ("car".equals(nodename))
}/**
* 完成解析某個節點時呼叫
** @param uri
* @param localname
* @param qname
* @throws saxexception
*/@override
public void endelement(string uri, string localname, string qname) throws saxexception
}/**
* 完成整個xml解析時呼叫
** @throws saxexception
*/@override
public void enddocument() throws saxexception
}
iOS之資料解析之XML解析
xml解析常見的兩種方式 dom解析和sax解析 dom解析 解析 如下 void xmldommethed nslog self sourcearray 寫入 如下 通過dom解析方式為xml增加節點 sax只可以讀取,不可以新增 void domaddnote sax解析 遵循協議 inte c...
iOS 網路資料之XML解析
向伺服器請求資料,那麼資料必須以某個特定的格式存放,然後一方把資料按這種格式組織起來,另一方按相同的方式把資料解析數來,就像是我們人之間講話交流,我們的話會轉變成振動 在空氣中傳播 然後對方的耳朵感受這種振動,然後把振動轉化為話,所以我認為格式的組織是為了更好的傳遞資料。一般網路資料會封裝成兩種格式...
XML解析之SAX解析
sax解析 核心類 saxparse ctory saxparser defaulthandler 步驟 建立工廠類例項 saxparse ctory factory saxparse ctory.newinstance 獲取解析器類例項 saxparser parser factory.newsa...