需要解析或者序列化的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 ...