XML是一種可擴(kuò)展的標(biāo)記語(yǔ)言,一般用來(lái)傳輸數(shù)據(jù)及少量數(shù)據(jù)存儲(chǔ)跑揉,而非顯示數(shù)據(jù)锅睛。
<?xml version="1.0" encoding="UTF-8"?>
<map>
<name>測(cè)試</name>
</map>
在Android中提供XML類來(lái)操作XML。
XML寫入
private void writeXml() throws Exception {
//獲取Xml序列化對(duì)象
XmlSerializer xmlSerializer = Xml.newSerializer();
//綁定輸出流
xmlSerializer.setOutput(openFileOutput("test.xml", MODE_PRIVATE), "UTF-8");
//開始寫入
xmlSerializer.startDocument("UTF-8", true);
//根據(jù)XML結(jié)構(gòu)寫入历谍,開始/結(jié)束對(duì)應(yīng)
xmlSerializer.startTag(null, "Map");
xmlSerializer.startTag(null, "Name");
xmlSerializer.text("測(cè)試內(nèi)容");
xmlSerializer.endTag(null, "Name");
xmlSerializer.endTag(null, "Map");
//結(jié)束寫入现拒,從內(nèi)容寫入磁盤
xmlSerializer.endDocument();
}
Pull解析XML
private void readXml() throws Exception {
//獲取XMLPull解析器
XmlPullParser xmlPullParser = Xml.newPullParser();
//綁定輸入流
xmlPullParser.setInput(openFileInput("test.xml"), "UTF-8");
/**
* Pull解析是基于事件的解析,因此專門定了幾個(gè)常量表示狀態(tài)
* START_DOCUMENT 0
* END_DOCUMENT 1
* START_TAG 2
* END_TAG 3
* TEXT 4
*/
int eventType = xmlPullParser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
if (eventType == XmlPullParser.START_TAG
//xmlPullParser.getName() 獲取節(jié)點(diǎn)名
&& xmlPullParser.getName().equals("Name")) {
//xmlPullParser.nextText(); 獲取節(jié)點(diǎn)內(nèi)容
String resValue = xmlPullParser.nextText();
Log.i("TagInfo", resValue);
}
//不斷讀取下一條望侈,直到結(jié)束
eventType = xmlPullParser.next();
}
}