Android - XML序列化
1、xml文件的序列化:采用XmlSerializer来实现XML文件的序列化。相比传统方式,更高效安全
MainActivity.java
package com.example.test_buildxmlfile; import java.io.File;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Random; import org.xmlpull.v1.XmlSerializer; import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.util.Xml;
import android.view.View;
import android.widget.Toast; import com.example.test_getxmlfile.R;
import com.test.MsgInfo.MsgInfo; /**
* @author daomul
* 主入口:xml文件的序列化
*/
public class MainActivity extends Activity { private List<MsgInfo> msgList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); msgList = new ArrayList<MsgInfo>();
Random random= new Random(); //随机的 (1:发送 2 :接收)
long number = 1340000001; //手机地址 //连续生成10条默认短信
for (int i = 0; i < 10; i++) {
msgList.add(new MsgInfo(System.currentTimeMillis(), random.nextInt(2),
"text MSg"+i,Long.toString(number+i),i ));
}
} /**
* 短信信息备份
* @param view 点击事件触发
*/
public void MsgSave(View view){ try {
//XML序列化
XmlSerializer serializer= Xml.newSerializer(); File file=new File(Environment.getExternalStorageDirectory(),"test.xml");
FileOutputStream os= new FileOutputStream(file); serializer.setOutput(os, "utf-8");//os 是导出的文件位置 encoding 指代utf-8
serializer.startDocument("utf-8", true); serializer.startTag(null, "msgs");
for (MsgInfo msg:msgList) {
serializer.startTag(null, "msg");
serializer.attribute(null, "msg", msg.getId()+"");//添加ID属性 serializer.startTag(null, "body");
serializer.text(msg.getBody());
serializer.endTag(null, "body"); serializer.startTag(null, "address");
serializer.text(msg.getAddress());
serializer.endTag(null, "address"); serializer.startTag(null, "type");
serializer.text(msg.getType()+"");
serializer.endTag(null, "type"); serializer.startTag(null, "date");
serializer.text(msg.getDate()+"");
serializer.endTag(null, "date"); serializer.endTag(null, "msg");
}
serializer.endTag(null, "msgs"); serializer.endDocument(); os.close();
Toast.makeText(this, "XML序列化成功", 0).show(); } catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
Toast.makeText(this, "XML序列化失败", 0).show();
}
}
}
MsgInfo.java
package com.test.MsgInfo; /**
* @author daomul
* 短信信息
*/ public class MsgInfo { private long date;
private int type;
private String body;
private String address;
private int id; //无参构造方法
public MsgInfo() { } //有参构造方法 Generate Constructor use fields...
public MsgInfo(long date, int type, String body, String address,int id) {
super();
this.date = date;
this.type = type;
this.body = body;
this.address = address;
this.id = id;
} //setter and getter
public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} 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 getBody() {
return body;
}
public void setBody(String body) {
this.body = body;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
} }
注: 写文件到SD卡中需要 user 权限
Android - XML序列化的更多相关文章
- Android 使用xml序列化器生成xml文件
在<Android 生成xml文件>一文中使用流的形式写入xml格式文件,但是存在一定的问题,那就是在短信内容中不能出现<>之类的括号,本文使用xml序列化器来解决 xml序列 ...
- XML序列化 判断是否是手机 字符操作普通帮助类 验证数据帮助类 IO帮助类 c# Lambda操作类封装 C# -- 使用反射(Reflect)获取dll文件中的类型并调用方法 C# -- 文件的压缩与解压(GZipStream)
XML序列化 #region 序列化 /// <summary> /// XML序列化 /// </summary> /// <param name="ob ...
- 二、Android XML数据解析
XML,可扩展标记语言.可以用来存储数据,可以看做是一个小型的数据库,SharedPreference就是使用XML文件存储数据的,SQLite底层也是一个XML文件,而在网络应用方面,通常作为信息的 ...
- Drawable实战解析:Android XML shape 标签使用详解(apk瘦身,减少内存好帮手)
Android XML shape 标签使用详解 一个android开发者肯定懂得使用 xml 定义一个 Drawable,比如定义一个 rect 或者 circle 作为一个 View 的背景. ...
- [.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口 IXmlSerializable 实现XML序列化 及 通用XML类
[.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口 IXmlSerializable 实现XML序列化 及 通用XML类 本节导读:本节主要介绍通过序列 ...
- .NET中XML序列化的总结
[题外话] 以前虽然常用.NET中的序列化,但是常用的BinaryFormatter,也就是二进制文件的序列化,却鲜用XML的序列化.对于XML序列化,.NET中同样提供了一个非常方便的工具XmlSe ...
- XML序列化和反序列化
上篇总结了下JSON的序列化和反序列化,博园中大牛给了很多牛叉的评论,学习了不少. 不过在上篇中忘了把json序列化和反序列化的另外一种方式写上去了,这里做个简单的补充: Json篇:http://w ...
- XML 序列化与反序列化
XML序列化与反序列化 1.将一个类转化为XML文件 /// <summary> /// 对象序列化成XML文件 /// </summary> /// <param na ...
- 关于XML序列化与CultureInfo
不同的计算机系统可能有着不同的CultureInfo,例如在中文环境下日期通常这样显示03/30/2016,而在有的操作系统下它可能是这样的30.3.2016. 这样的话带来一个问题,例如在中文环境下 ...
随机推荐
- js学习笔记19----getElementsByClassName函数封装
js里面的getElementsByClassName()方法可通过某个class名获取到元素,在标准浏览器下可使用,在非标准浏览器下不可用.为了能够让这个方法兼容所有的浏览器,可以封装成如下函数: ...
- php面试
var_dump()的作用是什么,主要用来干什么?Thread safe 和 Non Thread Safe 有什么区别?(本人表示不会,从没看见过)用php 把 gbk 的编码的字符串转换成 utf ...
- Qt 事件处理的五个层次
看了这篇文章(见http://devbean.blog.51cto.com/448512/231861),然后经过自己的思考,把Qt事件处理的五个层次.同时也是Qt时间处理的流程画了出来.若有不对请批 ...
- mssql 设置id自增 设置主键
主键自增长列在进行数据插入的时候,很有用的,如可以获取返回的自增ID值,接下来将介绍SQL Server如何设置主键自增长列,感兴趣的朋友可以了解下,希望本文对你有所帮助 1.新建一数据表,里 ...
- Can't connect to MySQL server on '192.168.7.175' (10060)
原因: 1.你的ip没有被授权,无法访问. 2.端口没有打开(如:3306端口没有打开). 解决方法: 授权(http://www.cnblogs.com/SZxiaochun/p/6401424.h ...
- Windows 中 .\ 和 ..\ 的区别
.\ 表示项目文件所在目录之下的目录...\ 表示项目文件所在目录向上一级目录下的目录...\..\表示项目文件所在目录向上二级目录之下的目录.
- Mysql数据库中InnoDB和MyISAM的差别
Mysql数据库中InnoDB和MyISAM的差别 InnoDB和MyISAM是在使用MySQL最常用的两个表类型,各有优缺点,视具体应用而定.基本的差别为:MyISAM类型不支持事务处理等高级处理, ...
- erlang在NotePad++下的高亮
转自:http://www.roberthorvick.com/2009/07/08/syntax-highlighing-for-erlang-in-notepad/ Syntax Highligh ...
- 【Java面试题】23 java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用?
java5 以前, 有如下两种:第一种:new Thread(){}.start();这表示调用 Thread 子类对象的 run 方法, new Thread(){}表示一个Thread 的匿名子类 ...
- java util.Date和sql.Date转换(时区转换)
public static Timestamp zoneTtime(String time) throws Exception{ time= "2018-08-01T10:01:21.905 ...