博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[android] xml文件的序列化
阅读量:6515 次
发布时间:2019-06-24

本文共 4672 字,大约阅读时间需要 15 分钟。

生成xml文件,模拟备份短信,创建短信的业务bean,创建一个domain的包放业务bean,这个业务bean里面,定义成员属性,生成get set方法,生成有参和无参的构造方法。

 

生成随机数,实例化Random,调用Random对象的nextInt(n)方法,生成0n之间的随机数,获取当前系统的时间戳System.currentTimeMillis(),使用for循环,循环生成一个list集合,代表短信的内容

 

点击保存按钮以后,使用StringBuilder对象append()拼接成一个xml的文件内容,根据上几节内容保存的SD卡中。记住要在清单文件中加权限

android.permission.WRITE_EXTERNAL_STORAGE,如果出现两个清单文件,不能删除这个,是工具bug。如果右键部署的时候,又开启了一个模拟器,那么这是adb挂掉了,关闭eclipse,在任务管理器中关闭adb.exe,重新打开eclipse

 

以上是传统方式,android提供了一个面向对象的方式

获取XmlSerilier对象,通过Xml.newSerilier()方法

调用XmlSerilier对象的setOutput(os,encoding)方法,文件输出流,编码

调用XmlSerilier对象的startDocument(encoding,standalone)方法,xml文件的声明,编码,是否独立

调用XmlSerilier对象的startTag(namespace,name)方法,开始节点,命名空间,节点名称

调用XmlSerilier对象的endTag(namespace,name)方法,结束节点,命名空间,节点名称

调用XmlSerilier对象的attribute(namespace,name,value)方法,节点属性,命名空间,属性名称,属性值

调用XmlSerilier对象的text()方法,节点内容

activity代码:

 

package com.tsh.makexml;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.util.ArrayList;import java.util.List;import java.util.Random;import org.xmlpull.v1.XmlSerializer;import com.tsh.makexml.domain.SmsInfo;import android.app.Activity;import android.os.Bundle;import android.os.Environment;import android.provider.Telephony.Sms;import android.util.Xml;import android.view.View;import android.widget.Toast;public class MainActivity extends Activity {    private List
smsInfos; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); smsInfos=new ArrayList
(); Random random=new Random(); String num="188000000"; for(int i=0;i<10;i++){ int type=random.nextInt(2)+1; smsInfos.add(new SmsInfo(System.currentTimeMillis(),type,"短信内容"+i,num+i)); } } /** * 备份短信第一种 * @param v */ public void backSms(View v){ StringBuilder sb=new StringBuilder(); sb.append("
"); sb.append("
"); for(SmsInfo sms:smsInfos){ sb.append(""+sms.getMessage()+""); sb.append("
"+sms.getDate()+"
"); sb.append("
"+sms.getType()+"
"); sb.append("
"+sms.getAddress()+"
"); } sb.append("
"); try { File file=new File(Environment.getExternalStorageDirectory(),"backup.xml"); FileOutputStream fos=new FileOutputStream(file); fos.write(sb.toString().getBytes()); fos.close(); Toast.makeText(this, "保存成功", 0).show(); } catch (Exception e) { Toast.makeText(this, "保存失败", 0).show(); } } /** * 备份短信第二种 * @param v */ public void backSms2(View v){ XmlSerializer serializer=Xml.newSerializer(); try { File file=new File(Environment.getExternalStorageDirectory(),"backup2.xml"); FileOutputStream os=new FileOutputStream(file); serializer.setOutput(os, "utf-8"); serializer.startDocument("utf-8", true); serializer.startTag(null, "smss"); for(SmsInfo sms:smsInfos){ serializer.startTag(null, "sms"); serializer.attribute(null, "tel", sms.getAddress()); serializer.text(sms.getMessage()); serializer.endTag(null, "sms"); } serializer.endTag(null, "smss"); serializer.endDocument(); os.close(); Toast.makeText(this, "保存成功", 0).show(); } catch (Exception e) { Toast.makeText(this, "保存失败", 0).show(); } }}

 

业务bean代码:

package com.tsh.makexml.domain;public class SmsInfo {    private long date;    private int type;    private String message;    private String address;    public SmsInfo() {    }        public SmsInfo(long date, int type, String message, String string) {        super();        this.date = date;        this.type = type;        this.message = message;        this.address = string;    }    public long getDate() {        return date;    }    public void setDate(long date) {        this.date = date;    }    public int getType() {        return type;    }    public void setType(int type) {        this.type = type;    }    public String getMessage() {        return message;    }    public void setMessage(String message) {        this.message = message;    }    public String getAddress() {        return address;    }    public void setAddress(String address) {        this.address = address;    }    }

 

转载于:https://www.cnblogs.com/taoshihan/p/5240298.html

你可能感兴趣的文章
Task的使用
查看>>
grep和正则表达式
查看>>
s:iterator巧妙控制跳出循环
查看>>
移动互联网思维
查看>>
redis-手写redis切片和非切片连接池并注入springboot中
查看>>
Kosaraju算法详解
查看>>
Serv-U 的升级及数据备份和迁移【转】
查看>>
webstorm无法显示左边文件夹目录的解决方法
查看>>
Android数据保存之文件保存
查看>>
数字校园-云资源平台 2014.10.26-人人通共享空间
查看>>
使用IIS承载WCF服务
查看>>
在 CentOS 和 RHEL 上安装 Puppet 服务器和客户端
查看>>
Android性能优化Google课程翻译一:Render----OverDraw实战
查看>>
用Camshift算法对指定目标进行跟踪
查看>>
Tiny4412 开发板 编译环境搭建【转】
查看>>
为你的网站加上SSL,可以使用HTTPS进行访问
查看>>
软件project--谈项目开发
查看>>
Android studio及eclipse中的junit单元測试
查看>>
几个英文网站
查看>>
在Android中创建文件
查看>>