使用xml序列化器保存数据
来源:互联网 发布:淘宝被同行刷直接访问 编辑:程序博客网 时间:2024/06/05 06:21
在前面的博客中介绍了使用内部存储存储数据、使用外部存储储存数据和使用SharedPreference保存数据,通过观察可知,前面三种存储数据的方式只适合保存信息量比较单一的数据,如现在手机中都会用一个短信备份的功能,当备份短信时,短信的信息量比较大,有收信人、信息内容、短信发送的时间等信息,为了解决这个问题android中提供了一个使用xml序列化器的方式保存数据,接下来介绍使用xml序列化器保存短信
首先制作一个如下所示的界面,在界面上放一个备份短信的按钮
单击备份按钮会在sd卡中生成一个sms.xml文件,打开sms.xml文件后可以看到备份的短信内容以xml的格式保存在sms.xml文件中
实现方式,首先使用Android Studio创建一个Android工程,并且创建一个Message类用于处理短信数据
Message类中的代码如下
package com.fyt.xmlserializer;//创建一个Message类,用于处理短信数据public class Message { //短信的内容 private String body; //短信的发送日期 private String date; //收信人的地址(收信人的手机号码) private String address; //短信的类型 //0表示短信是发出去的 //1表示短信是收到的 private String type; //构造方法 public Message(String body, String date, String address, String type) { this.body = body; this.date = date; this.address = address; this.type = type; } 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; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getType() { return type; } public void setType(String type) { this.type = type; }}
然后修改MainActivity.java中的代码
package com.fyt.xmlserializer;import android.app.Activity;import android.os.Bundle;import android.util.Xml;import android.view.View;import org.xmlpull.v1.XmlSerializer;import java.io.File;import java.io.FileOutputStream;import java.util.ArrayList;import java.util.Date;import java.util.List;public class MainActivity extends Activity { //定义一个集合变量用于存储短信 private List<Message> smsList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //创建集合,用于存储短信 smsList = new ArrayList<Message>(); //向集合中添加10条模拟短信 for(int i = 0; i < 10; i++) { //创建短信 Message sms = new Message( "你上网了吗" + i, new Date(System.currentTimeMillis()) + "", "1388978781" + i, "1"); //将短信添加到集合中 smsList.add(sms); } } //备份短信按钮响应函数 public void click(View view) { //拿到序列化器对象 XmlSerializer xs = Xml.newSerializer(); //创建文件对象,设置短信的储存路径 File file = new File("sdcard/sms.xml"); //捕获异常 try { //创建文件输出流 FileOutputStream fos = new FileOutputStream(file); //enconding:指定用什么编码生成xml文件 xs.setOutput(fos, "utf-8"); //设置xml中的头结点 //第一个参数:头结点中的enconding属性 xs.startDocument("utf-8", true); //设置开始结点 xs.startTag(null, "message"); //使用增强for遍历集合中的短信 for(Message sms : smsList) { xs.startTag(null, "sms"); //将短信的内容写入xml文件中 xs.startTag(null, "body"); xs.text(sms.getBody()); xs.endTag(null, "body"); //将短信的发送或者接收时间写入xml文件中 xs.startTag(null, "date"); xs.text(sms.getDate()); xs.endTag(null, "date"); //将短信的地址写入xml文件中 xs.startTag(null, "address"); xs.text(sms.getAddress()); xs.endTag(null, "address"); //将短信是发送方还是接收方的标记写入xml文件中 xs.startTag(null, "type"); xs.text(sms.getType()); xs.endTag(null, "type"); xs.endTag(null, "sms"); } //设置结束结点 xs.endTag(null, "message"); //告诉序列化器,文件生成完毕 xs.endDocument(); //处理操作中出现的异常 } catch (Exception e) { e.printStackTrace(); } }}
最后在配置文件中添加对SD卡的读权限和对SD卡的写权限
<!--对SD卡的写权限--> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <!--对SD卡的读取权限--> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
0 0
- 使用xml序列化器保存数据
- 使用xml序列化器生成xml文件保存数据
- Android中使用xml保存数据(xml文件序列化)及使用pull解析xml文件
- 使用XML保存数据
- Android学习(23) -- 数据存储之xml序列化器保存数据
- Android 存储学习之保存系统短信到SD卡(使用XML序列化器)
- Unity中使用序列化来保存本地游戏数据
- 序列化 XML 数据
- 序列化器生成XML文件保存信息
- SSObjectBase序列化保存数据的工具
- ios 序列化保存bean数据。
- Memcached的序列化处理保存数据
- C# 序列化数据保存在本地
- 13.xml序列化器的使用
- 【黑马Android】(02)短信发送器/布局演示/android下单位/android下Junit/保存数据/android下权限/xml解析和序列化
- 使用xml序列化器生成xml文件
- 使用SharedPreferences保存序列化对象
- XML保存数据
- Android - 图像
- LeetCode *** 24. Swap Nodes in Pairs
- Linux ifstat --网络接口检测工具
- PHP编码规范
- 寻找二叉树两个节点的最低公共祖先
- 使用xml序列化器保存数据
- 2016/04/8
- Linux iftop --网络流量监控
- Qt下 QString转char*
- C#基础-获得当前程序的 空间名.类名.方法名
- Fiddler抓包工具的配置
- 报错:java.util.Map is an interface, and JAXB can't handle interfaces.
- c++第二次作业
- ie8兼容css3的样式 如@media