美文网首页
拼接并创建一个.xml文件

拼接并创建一个.xml文件

作者: biyu6 | 来源:发表于2019-02-25 17:35 被阅读0次
    生成的xml文件内容.png

    第1种方式:StringBuffer (不推荐)

    通过StringBuffer 拼接字符串的方式自己组拼,最后将字符串存入一个自己定义的文件中(.xml)

        //生成xml文件的第一种方式
        public void click(View v) {//点击按钮通过StringBuffer生成xml
            //创建生成字符串的对象
            StringBuffer sBuffer = new StringBuffer();//单线程用StringBuilder更安全一些
            
            //开始组拼xml的文件头(注意用 \ 转义)
            sBuffer.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
            
            //开始组拼xml根节点
            sBuffer.append("<smss>");
            //开始组拼sms节点
            for (Sms sms : smsList) {
                sBuffer.append("<sms>");
                //开始组拼address节点
                sBuffer.append("<address>");
                sBuffer.append(sms.getAddress());
                sBuffer.append("</address>");
                //开始组拼body节点
                sBuffer.append("<body>");
                sBuffer.append(sms.getBody());
                sBuffer.append("</body>");
                //开始组拼date节点
                sBuffer.append("<date>");
                sBuffer.append(sms.getDate());
                sBuffer.append("</date>");
                
                sBuffer.append("</sms>");
            }
            sBuffer.append("</smss>");
            //把数据保存到sd卡中
            try {
                File file = new File(Environment.getExternalStorageDirectory().getPath(),"smsbackup.xml");
                FileOutputStream fos = new FileOutputStream(file);
                fos.write(sBuffer.toString().getBytes());
                fos.close();//关闭流
                System.out.println("保存成功");
            } catch (Exception e) {
                e.printStackTrace();
            }
            
        }
    
    

    第2种方式:XmlSerializer (推荐)

    //生成xml文件的第二种方式
        public void click(View v) {//点击按钮通过XmlSerializer类生成一个xml文件
            try {
                //获取XmlSerializer类的实例,通过xml工具类来获取
                XmlSerializer serializer = Xml.newSerializer();
                //设置XmlSerializer序列化器参数
                File file = new File(Environment.getExternalStorageDirectory().getPath(),"smsbackup2.xml");
                FileOutputStream fos = new FileOutputStream(file);
                serializer.setOutput(fos,"utf-8");
                //开始写xml文档的开头
                serializer.startDocument("utf-8", true);//文档的编码格式
                //写xml的根节点,namespace 命名空间
                serializer.startTag(null, "smss");//smss开始
                //循环写sms节点
                for (Sms sms : smsList) {
                    serializer.startTag(null, "sms");//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");//sms结尾
                }
                serializer.endTag(null, "smss");//smss结尾
                serializer.endDocument();//写文档的结尾(写一个开头就写一个结尾,不会出错)
                fos.close();//关闭流
                System.out.println("保存成功");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    

    附:Sms类

    public class Sms {
        private String address;
        private String body;
        private String date;
        /**生成属性getter和setter方法
         * 右键 Source--Generate Getters and Setters... --全选
         */
        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;
        }
    }
    

    附:模拟数据

    private List<Sms> smsList;//定义一个存储Sms对象的数组
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            //创建模拟数据
            smsList = new ArrayList<Sms>();
            for (int i = 0; i < 3; i++) {
                Sms sms = new Sms();
                sms.setAddress("10001"+i);
                sms.setBody("你好"+i);
                sms.setDate("199"+i);
                //把sms对象加入到集合中
                smsList.add(sms);
            }
        }
    

    相关文章

      网友评论

          本文标题:拼接并创建一个.xml文件

          本文链接:https://www.haomeiwen.com/subject/ezwgyqtx.html