安卓使用StringBuffer和FileOutputStream生成xml文档

该程序是在安卓中点击生成xml按钮,在sdcard生成一个名为smsbackup的xml文档
在这里插入图片描述
布局就不多说了,先在存放java的文件夹中新建一个Sms类用来声明变量
在这里插入图片描述
Sms代码如下:

package com.example.createxmlv1;

public class Sms {
    private String address;
    private String body;
    private String date;

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getBody() {
        return body;
    }

    public void setBody(String body) {
        this.body = body;
    }

    public String getDate() {
        return date;
    }

    public void setDate(String date) {
        this.date = date;
    }
}

然后在主界面类中初始化我们要备份的数据,之后修改点击按钮的方法,通过StringBuffer的方式生成一个xml文件。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
创建StringBuffer对象,开始拼接xml的文件头,根节点sms节点,address节点,body节点,date节点,然后获取sdcard文件的路径,再使用输出流将内容写入生成的xml文件。

主界面完整代码如下:

package com.example.createxmlv1;

import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

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> smsList;
    Button btn1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //[1]初始化我们要备份的数据
        smsList=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对象加入到集合中
            smsList.add(sms);

        }
    }

    //点击按钮通过 stringBuffer的方式生成一个xml的文件
    public void click(View view) {
        //[1]创建sb对象
        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:smsList){
            sb.append("<sms>");

            //[5]开始组拼address节点
            sb.append("<address>");
            sb.append(sms.getAddress());
            sb.append("</address>");

            //[6]开始组拼body节点
            sb.append("<body>");
            sb.append(sms.getBody());
            sb.append("</body>");


            //[7]开始组拼date节点
            sb.append("<date>");
            sb.append(sms.getDate());
            sb.append("</date>");

            sb.append("</sms>");
        }

        sb.append("</smss>");


        //[8]把数据保存到sd卡中
        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();
        }
    }
}

猜你喜欢

转载自blog.csdn.net/liyunfu233/article/details/84144934
今日推荐