簡介pull解析xml xmlpullparser解析器的執行方式與sax解析器相似。它提供了類似的事件(開始元素和結束元素),但需要使用parser.next()方法來提取它們。事件將作為數值**被傳送,因此可以根據不同的事件**值來進行不同的處理。通過parser.geteventtype()方法來取得事件的**值。 當處於某個元素時可以呼叫xmlpullparser的getattributte()方法來獲取【屬性】的值,也可呼叫它的nexttext()獲取本【節點】的值。
具體思路: 1、構建pullxmlparser解析器
xmlpullparser parser = xml.newpullparser()
; 或
xmlpullparse***ctory fac = xmlpullparse***ctory.newinstance()
;//獲取解析器工廠
xmlpullparser parser = fac.newpullparser();//通過解析器工廠獲取解析器
2、將xml文件註冊到解析器中
parser.setinput(is, "utf-8")
;
3、觸發事件,獲得事件型別碼
inttype = parser.geteventtype();
4、針對事件進行具體分析 "name".equals(parser.getname());//判斷開始標籤元素是否是name parser.getattributevalue(0);//得到標籤的【屬性值 】 parser.nexttext();//獲取下乙個text【節點的值 】
5、觸發並進入下乙個事件
type = parser.next();
pull解析和sax解析不一樣的地方有:
優點:不是一次載入,中途可以停止
activitypublicclassmainactivity extendslistactivity ;
setlistadapter(new
arrayadapter(this
, android.r.layout.******_list_item_1, new arraylist(arrays.aslist(
array))));
}@override
protected
void onlistitemclick(listview l, view v, int position, long id)
smsinfoxmlutils.xmlserializer(
infos, environment.getexternalstoragedirectory()
+ "/sms.xml")
; }
catch
(illegalargumentexception e)
catch
(illegalstateexception e)
catch
(ioexception e)
break;
case 1:
trybufr.close();
tv_info.settext(content.tostring());
}catch
(ioexception e1)
break;
case 2:
trytv_info.settext(sb.tostring());
}catch
(filenotfoundexception e)
catch
(exception e)
break;
}}
}
工具類publicclasssmsinfoxmlutils
xmlserializer.endtag(null
, "smss")
;
xmlserializer.enddocument();
fos.close();
}/**引數為乙個輸入流,返回值為解析此輸入流後生成的集合*/
public
static arraylistxmlparser(inputstream is)
throws exception
else
if("sms"
.equals(parser.getname()))
else
if("body"
.equals(parser.getname()))
else
if("address"
.equals(parser.getname()))
break;
case xmlpullparser.end_tag://標籤結束
if("sms"
.equals(parser.getname()))
break;
}type = parser.next();//這一步很重要,該方法返回乙個事件碼,也是觸發下乙個事件的方法
}
return infos;//整個文件解析完畢,返回集合
}
}
來自為知筆記(wiz)
XML序列化及PULL解析,DOM解析,SAX解析
需要解析或者序列化的xml檔案如下 hello world 20zhang0 hello world 21zhang1 hello world 22zhang2 hello world 23zhang3 hello world 24zhang4 一 xml序列化 往 data data 包名 fil...
xml序列化與反序列化
序列化是將物件狀態轉換為可保持或傳輸的格式的過程。與序列化相對的是反序列化,它將流轉換為物件。這兩個過程結合起來,可以輕鬆地儲存和傳輸資料。序列化的目的 1 以某種儲存形式使自定義物件持久化 2 將物件從乙個地方傳遞到另乙個地方。net framework 提供兩種序列化技術 二進位制序列化保持型別...
php json與xml序列化 反序列化
php提供了json encode和json decode函式對物件進行json格式序列化 反序列化操作 data array name byron age 24,male friends array casper frank vincent json json encode data 將陣列序列化...