安卓通过XmlSerializer生成xml文件

该博文是在上一篇博文的基础上对主界面进行修改的,上篇博文链接: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();
        }

    }
}

猜你喜欢

转载自blog.csdn.net/liyunfu233/article/details/84145084