XML 序列化與PULL解析

2021-09-07 07:00:46 字數 2778 閱讀 6281

簡介

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解析不一樣的地方有:

優點:不是一次載入,中途可以停止

activity

publicclassmainactivity 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 將陣列序列化...