Android 生成xml文件

1.实例

package com.example.lucky.test52xml;

import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
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.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {
    Button bt1_generateXml;
    Button bt2_generateXml;
    List<Sms> smsList;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        bt1_generateXml=findViewById(R.id.bt1_generateXml);
        bt2_generateXml=findViewById(R.id.bt2_generateXml);
        smsList=new ArrayList<>();
        for (int i = 0; i <10; i++) {
            Sms sms=new Sms();
            sms.setAddress("10088"+i);
            sms.setBody("nihaolucky"+i);
            sms.setDate("201"+i);
            smsList.add(sms);
        }

        //方法1采用拼接的方式生成xml(不推荐使用)
        bt1_generateXml.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                StringBuffer sb=new StringBuffer();
                //开始拼接XML文件头
                sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
                //开始拼接xml根节点
                sb.append("<smss>");
                for (Sms sms : smsList) {
                    sb.append("<sms>");

                    //开始拼接address节点
                    sb.append("<address>");
                    sb.append(sms.getAddress());
                    sb.append("</address>");

                    //开始拼接body节点
                    sb.append("<body>");
                    sb.append(sms.getBody());
                    sb.append("</body>");

                    //开始拼接date节点
                    sb.append("<date>");
                    sb.append(sms.getDate());
                    sb.append("</date>");

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

                //将数据保存到sd卡中
                File file=new File(Environment.getExternalStorageDirectory().getPath(),"lucky.xml");
                try {
                    FileOutputStream fos=new FileOutputStream(file); //文件输出流对应写操作
                    fos.write(sb.toString().getBytes());
                    fos.close(); //关闭流
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }

        });

        bt2_generateXml.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //1.获取XmlSerializer类的实例,通过Xml这个工具列去获取
                XmlSerializer serializer=Xml.newSerializer();
                //2.设置XmlSerializer序列化器的参数
                File file=new File(Environment.getExternalStorageDirectory().getPath(),"lucky2.xml");
                FileOutputStream fos= null;
                try {
                    fos = new FileOutputStream(file);
                    serializer.setOutput(fos,"utf-8");
                } catch (Exception e) {
                    e.printStackTrace();
                }

                //3.开始写xml文档开头
                try {
                    serializer.startDocument("utf-8",true);
                    serializer.startTag(null,"smss");
                    //循环写sms节点
                    for (Sms sms : smsList) {
                        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();
                }

            }
        });
    }
}

猜你喜欢

转载自www.cnblogs.com/luckyplj/p/10616299.html