XML序列化及PULL解析,DOM解析,SAX解析

2021-06-22 11:30:58 字數 2697 閱讀 6875

需要解析或者序列化的xml檔案如下:

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>

hello world

20zhang0

hello world

21zhang1

hello world

22zhang2

hello world

23zhang3

hello world

24zhang4

一、xml序列化

/**

* 往/data/data/包名/files/person.xml裡生成xml資料

* @param personlist

* @return true 序列化成功 false 序列化失敗

*/private boolean mxmlserializer(listpersonlist) else if("person".equals(name)) else if("age".equals(name)) else if("name".equals(name))

break;

case xmlpullparser.end_tag:

if("person".equals(name)) else if("persons".equals(name))

break;

case xmlpullparser.text:

//對應於 hello world

log.i("xmlpullparser", parser.gettext());

break;

default:

break;

}//使解析事件往下走

eventtype = parser.next();

}} catch (exception e)

return null;

}

2、dom解析

dom是基於樹形結構的的節點或資訊片段的集合,允許開發人員使用dom api遍歷xml樹、檢索所需資料。分析該結構通常需要載入整個文件和構造樹形結構,然後才可以檢索和更新節點資訊。

由於dom在記憶體中以樹形結構存放,因此檢索和更新效率會更高。但是對於特別大的文件,解析和載入整個文件將會很耗資源,所以android中使用此方式解析xml並不常見。

/**

* dom解析xml

* @param is 輸入流

* @return 異常返回null

*/public static listmparse(inputstream is) else if ("name".equals(e.getnodename())) }}

personlist.add(person);

}return personlist;

} catch (exception e)

return null;

}

3、sax解析

sax(****** api for xml)解析器是一種基於事件的解析器,它的核心是事件處理模式,主要是圍繞著事件源以及事件處理器來工作的。當事件源產生事件後,呼叫事件處理器相應的處理方法,乙個事件就可以得到處理。在事件源呼叫事件處理器中特定方法的時候,還要傳遞給事件處理器相應事件的狀態資訊,這樣事件處理器才能夠根據提供的事件資訊來決定自己的行為。sax解析器的優點是解析速度快,占用記憶體少。非常適合在android移動裝置中使用。

(1)定義乙個類,繼承與defaulthandler類,**如下:

public class saxhandler extends defaulthandler 

@override

public void characters(char ch, int start, int length)

throws saxexception

@override

public void enddocument() throws saxexception

@override

public void endelement(string uri, string localname, string qname)

throws saxexception else if("name".equals(localname)) else if("person".equals(localname))

} @override

public void startdocument() throws saxexception

@override

public void startelement(string uri, string localname, string qname,

attributes attributes) throws saxexception }

}

(2)sax解析類

/**

* sax解析xml

* @param is 輸入流

* @return 異常返回null

*/public static listmparse(inputstream is) catch (exception e)

return null;

}

XML 序列化與PULL解析

簡介 pull解析xml xmlpullparser解析器的執行方式與sax解析器相似。它提供了類似的事件 開始元素和結束元素 但需要使用parser.next 方法來提取它們。事件將作為數值 被傳送,因此可以根據不同的事件 值來進行不同的處理。通過parser.geteventtype 方法來取得...

xml解析和序列化總結

第一,xml是什麼?和html類似,區別 xml是儲存資料的,自定義的 html是顯示資料的,預定義的 常用1.0版本,不用1.1不想下相容 應用系統之間傳輸資料的格式 表示生活中的關係 配置檔案 第二,語法 宣告 駝峰命名法 必須放到第一行,還要第一列 元素的定義 有開始就有結束 沒有內容就行內結...

json和xml的序列化及反序列化

實現了json和obj物件,xml和obj物件的序列化和反序列化,還有乙個obj物件和二進位制byte陣列的序列化和反序列化。如下 二進位制byte陣列轉obj static object bytestoobj string path else obj轉二進位制byte陣列 static void ...