通过程序的方式生产一个xml文件 ,xml的作用 传输数据 作为应用的配置文件 描述现实生活中的数据.
模拟数据
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)告诉序列化器我要生成一个xml文件 对应的方法setOutPut
3)根据xml语法生成我们自己想要的xml
// 使用谷歌封装api来实现xml的序列化
try {
// 1)获取序列化器 XmlSerializer
XmlSerializer serializer = Xml.newSerializer();
// 2)告诉序列化器我要生成一个xml文件 对应的方法setOutPut
File file = new File(Environment.getExternalStorageDirectory()
.getPath(), "smsbackup2.xml");
FileOutputStream fos = new FileOutputStream(file);
serializer.setOutput(fos, "utf-8");
// 3)根据xml语法生成我们自己想要的xml 使用谷歌封装好的api实现xml序列化只需要调用对应的方法 即可
// 方法是按照面向对象的思想去设计的
serializer.startDocument("utf-8", true);
// 4)生成xml的根标签 参1: 生产的xml文件需不需要命名空间(如同布局文件件中的Android) 不需要 参数2:标签的名字
serializer.startTag(null, "smss");
// 5)生产sms标签 需要循环生产
for (Sms sms : smsLists) {
serializer.startTag(null, "sms");
// 6)生成address标签
serializer.startTag(null, "address");
serializer.text(sms.getAddress());
serializer.endTag(null, "address");
// 7)生成body标签
serializer.startTag(null, "body");
serializer.text(sms.getBody());
serializer.endTag(null, "body");
// 6)生成date标签
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自己组拼
// 点击按钮 使用stringbuffer自己组拼xml文件 生产这个xml文件用来存储短信的数据
// [1]创建StringBuffer
StringBuffer sb = new StringBuffer();
// [2]组拼xml文件头
sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");// 清单文件第一行,然后将"转译
// [3]组拼xml的根节点(要有头有尾)
sb.append("<smss>");
// [4]组拼sms节点 要循环(多条短信)
for (Sms sms : smsLists) {
sb.append("<sms>");
// [5]组拼address节点
sb.append("<address>" + sms.getAddress() + "</address>");
// [6]组拼body节点
sb.append("<body>" + sms.getBody() + "</body>");
// [7]组拼date节点
sb.append("<date>" + sms.getDate() + "</date>");
sb.append("</sms>");
}
sb.append("</smss>");
// [8]把组拼好的数据存到手机的sd卡目录 注意 要加上对应权限(在清单文件中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();
}