通過程序的方式生產(chǎn)一個(gè)xml文件 ,xml的作用 傳輸數(shù)據(jù) 作為應(yīng)用的配置文件 描述現(xiàn)實(shí)生活中的數(shù)據(jù).
模擬數(shù)據(jù)
smsLists = new ArrayList<Sms>();
for (int i = 0; i < 10; i++) {
Sms sms = new Sms();
sms.setAddress("11" + i);
sms.setBody("nihao" + i);
sms.setDate("201" + i);
// 把對象加入到集合里
smsLists.add(sms);
}
列化器 XmlSerializer序列化
1)獲取序列化器 XmlSerializer
2)告訴序列化器我要生成一個(gè)xml文件 對應(yīng)的方法setOutPut
3)根據(jù)xml語法生成我們自己想要的xml
// 使用谷歌封裝api來實(shí)現(xiàn)xml的序列化
try {
// 1)獲取序列化器 XmlSerializer
XmlSerializer serializer = Xml.newSerializer();
// 2)告訴序列化器我要生成一個(gè)xml文件 對應(yīng)的方法setOutPut
File file = new File(Environment.getExternalStorageDirectory()
.getPath(), "smsbackup2.xml");
FileOutputStream fos = new FileOutputStream(file);
serializer.setOutput(fos, "utf-8");
// 3)根據(jù)xml語法生成我們自己想要的xml 使用谷歌封裝好的api實(shí)現(xiàn)xml序列化只需要調(diào)用對應(yīng)的方法 即可
// 方法是按照面向?qū)ο蟮乃枷肴ピO(shè)計(jì)的
serializer.startDocument("utf-8", true);
// 4)生成xml的根標(biāo)簽 參1: 生產(chǎn)的xml文件需不需要命名空間(如同布局文件件中的Android) 不需要 參數(shù)2:標(biāo)簽的名字
serializer.startTag(null, "smss");
// 5)生產(chǎn)sms標(biāo)簽 需要循環(huán)生產(chǎn)
for (Sms sms : smsLists) {
serializer.startTag(null, "sms");
// 6)生成address標(biāo)簽
serializer.startTag(null, "address");
serializer.text(sms.getAddress());
serializer.endTag(null, "address");
// 7)生成body標(biāo)簽
serializer.startTag(null, "body");
serializer.text(sms.getBody());
serializer.endTag(null, "body");
// 6)生成date標(biāo)簽
serializer.startTag(null, "date");
serializer.text(sms.getDate());
serializer.endTag(null, "date");
serializer.endTag(null, "sms");
}
serializer.endTag(null, "smss");
serializer.endDocument();
} catch (Exception e) {
e.printStackTrace();
}
Stringbuffer自己組拼
// 點(diǎn)擊按鈕 使用stringbuffer自己組拼xml文件 生產(chǎn)這個(gè)xml文件用來存儲(chǔ)短信的數(shù)據(jù)
// [1]創(chuàng)建StringBuffer
StringBuffer sb = new StringBuffer();
// [2]組拼xml文件頭
sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");// 清單文件第一行,然后將"轉(zhuǎn)譯
// [3]組拼xml的根節(jié)點(diǎn)(要有頭有尾)
sb.append("<smss>");
// [4]組拼sms節(jié)點(diǎn) 要循環(huán)(多條短信)
for (Sms sms : smsLists) {
sb.append("<sms>");
// [5]組拼address節(jié)點(diǎn)
sb.append("<address>" + sms.getAddress() + "</address>");
// [6]組拼body節(jié)點(diǎn)
sb.append("<body>" + sms.getBody() + "</body>");
// [7]組拼date節(jié)點(diǎn)
sb.append("<date>" + sms.getDate() + "</date>");
sb.append("</sms>");
}
sb.append("</smss>");
// [8]把組拼好的數(shù)據(jù)存到手機(jī)的sd卡目錄 注意 要加上對應(yīng)權(quán)限(在清單文件中android.permission.WRITE_EXTERNAL_STORAGE)
try {
File file = new File(Environment.getExternalStorageDirectory()
.getPath(), "smsbackup.xml");
FileOutputStream fos = new FileOutputStream(file);
fos.write(sb.toString().getBytes());
fos.close();
} catch (Exception e) {
e.printStackTrace();
}