该博文是在上一篇博文的基础上对主界面进行修改的,上篇博文链接:https://blog.csdn.net/liyunfu233/article/details/84144934
对按钮单机事件进行修改
1、获取XmlSerializer类的实例 通过xml这个工具类获取
2、设置XmlSerializer序列化的参数
首先获取文件路径,初始化输出流,然后将序列化的参数设置好
3、开始写xml文档开头,根节点开头,循环写sms节点(address节点,body节点,date节点,),根节点结束,文档结束,关闭输出流。
主界面完整代码如下:
package com.example.createxmlv2;
import android.os.Bundle;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.util.Xml;
import android.view.View;
import android.widget.Button;
import org.xmlpull.v1.XmlSerializer;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
List<Sms> smsLists;
Button btn1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//[1]初始化我们要备份的数据
smsLists=new ArrayList<Sms>();
for (int i=0;i<10;i++){
Sms sms=new Sms();
sms.setAddress("10008"+i);
sms.setBody("nihao"+i);
sms.setDate("201"+i);
//[2]把sms对象加入到集合中
smsLists.add(sms);
}
}
//点击按钮通过 stringBuffer的方式生成一个xml的文件
public void click(View view) {
try {
//[1]获取xmlSerializer类的实例 通过xml这个工具类获取
XmlSerializer serializer= Xml.newSerializer();
//[2]设置xmlSerializer序列化的参数
File file=new File(Environment.getExternalStorageDirectory().getPath(),"smsbackup2.xml");
FileOutputStream fos=new FileOutputStream(file);
serializer.setOutput(fos,"utf-8");
//[3]开始写xml文档开头
serializer.startDocument("utf-8",true);
//[4]写xml的根节点 namespace 命名空间
serializer.startTag(null,"smss");
//[5]循环写sms节点
for (Sms sms:smsLists){
serializer.startTag(null,"sms");
//开始写address节点
serializer.startTag(null,"address");
serializer.text(sms.getAddress());
serializer.endTag(null,"address");
//开始写body节点
serializer.startTag(null,"body");
serializer.text(sms.getBody());
serializer.endTag(null,"body");
//开始写date节点
serializer.startTag(null,"date");
serializer.text(sms.getDate());
serializer.endTag(null,"date");
serializer.endTag(null,"sms");
}
serializer.endTag(null,"smss");
//写文档结尾
serializer.endDocument();
fos.close();//关闭流
} catch (Exception e) {
e.printStackTrace();
}
}
}