如,xml
檔案如下:
<?xml version="1.0" encoding="utf-8"?>
大話西遊
" id="10023" author="小不點
" dlcount="13233" ranking="23" icon="" tags="玄幻,熱血
,法寶"/>
西遊記" id="10023" author="小不點
" dlcount="13233" ranking="256" icon="" tags="玄幻,熱血
,法寶"/>
紅樓夢" id="10023" author="小不點
" dlcount="13233" ranking="24" icon="" tags=""/>
用pull
解析如下:
public void pullparse(){
inputstream instream = getbookbytopidtask.class
.getresourceasstream("getbookbytopid.xml");//得到輸入流,這裡是得到檔案的輸入流,如果是和伺服器互動,得到的輸入流是網路的輸入流
xmlpullparser parser = xml.newpullparser();//得到
xml解析器的例項
parser.setinput(instream, "utf-8");//將輸入流和解析器繫結
int eventtype = parser.geteventtype();//首先得到解析器解析到檔案的哪個部位。
string elementname;
while (eventtype != xmlpullparser.end_document) {//如果沒有解析到檔案的結尾,則接著解析
switch (eventtype) {//檢測解析器解析到哪個位置
case xmlpullparser.start_document://如果解析到文件的開頭
break;
case xmlpullparser.start_tag://如果解析到標籤的開始
elementname=parser.getname();//得到標籤的名稱
if(elementname.equals("booklist")){//判斷是不是」booklist」這個標籤
booklist=new arraylist>();
pagecount=integer.parseint(parser.getattributevalue(0));//得到booklist中的第乙個屬性值。也就是pagecount的值。
break;
if(elementname.equals("book")){
mapbook= elementtohashmap(parser);// elementtohashmap這個方法是取得所有屬性的值,然後把所有屬性的鍵和值放入乙個hashmap
中,這個方法是自定義方法,下面有**。
booklist.add(book);
break;
case xmlpullparser.end_tag://判斷是不是解析到了標籤的結尾
break;
case xmlpullparser.end_document://判斷是不是解析到了文件的結尾
booklist=null;
pagecount=0;
break;
eventtype=parser.next();//乙個標籤解析完成以後,則開始下乙個標籤。
instream.close();//關閉輸入流
public static mapelementtohashmap(xmlpullparser parser) //引數是傳入的
xml解析器
maponeelement = new hashmap();
int attrcnt = parser.getattributecount();//得到當前標籤中屬性的長度
for (int attridx = 0; attridx < attrcnt; attridx++) {//遍歷這個標籤
string attrname = parser.getattributename(attridx);//得到屬性的名字
string attrvalue = parser.getattributevalue(attridx);//得到屬性的值
oneelement.put(attrname, attrvalue);//加入到
hashmap中
return oneelement;
這個方法對於這樣的xml
結構很有效果:
book標籤中含有很多的屬性,可以一次性的將屬性裝入乙個
map中。
Pull解析例項
pull解析是解析xml檔案最完美的方式,解決了dom解析和sax解析的問題,是谷歌所推薦的解析xml檔案方式,下面的 是解析本地xml檔案 在activity中的 pull解析例項 xmlpullparser pull xml.newpullparser 呼叫自定義方法 listlist pull...
XML解析之PULL解析
pull解析 為解決sax的一些侷限 不能手動控制解析結束 出現pull解析 使用pull解析需要匯入兩個jar包 kxml2 2.3.0.jar xmlpull 1 0 5.jar 核心類 xmlpullparse ctory xmlpullparser 步驟 獲取工廠類例項 xmlpullpar...
PULL解析XML檔案
常用的xml pull的介面和類 pull解析器的執行方式和sax類似,都是基於事件的模式。標籤名說明 對應的數字 start document 文件開始標記 0end document 文件結束標記 1start tag 標籤開始標記 2end tag 標籤結束標記 3初始化處理 從assets中...