xml文件的序列化示例
1、创建activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" > <Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="99dp"
android:onClick="bck"
android:text="@string/bcak" /> <Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/button1"
android:layout_centerVertical="true"
android:onClick="pck"
android:text="@string/back2" /> </RelativeLayout>
2、编写MainActivity类
package com.hyzhou.xmldemo; import java.io.File;
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 android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.util.Log;
import android.util.Xml;
import android.view.Menu;
import android.view.View;
import android.widget.Toast; public class MainActivity extends Activity { private List<SMSInfo> smsinfo; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
smsinfo=new ArrayList<SMSInfo>();
Random random=new Random();
long number=1571132;
for (int i = 0; i < 10; i++) {
smsinfo.add(new SMSInfo(System.currentTimeMillis(), random.nextInt()+1, "短信内容"+i, Long.toString(number+i),i));
} }
//第一种实现方式
public void bck(View view) {
StringBuilder sb=new StringBuilder();
sb.append("<smss>");
for (SMSInfo info : smsinfo) {
sb.append("<sms>");
sb.append("<address>");
sb.append(info.getAddress());
sb.append("</address>"); sb.append("<type>");
sb.append(info.getType());
sb.append("</type>"); sb.append("<body>");
sb.append(info.getBody());
sb.append("</body>"); sb.append("<date>");
sb.append(info.getBody());
sb.append("</date>"); sb.append("</sms>"); }
sb.append("</smss>"); try {
File file=new File(Environment.getExternalStorageDirectory(),"back.xml");
FileOutputStream fos=new FileOutputStream(file);
fos.write(sb.toString().getBytes());
fos.close();
Toast.makeText(this, "备份成功", Toast.LENGTH_SHORT).show();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Toast.makeText(this, "备份失败", Toast.LENGTH_SHORT).show(); }
}
//第二种实现方式,推荐使用第二种方式
public void pck(View view) {
try {
XmlSerializer serializer=Xml.newSerializer();
File file=new File(Environment.getExternalStorageDirectory(),"back2.xml");
FileOutputStream os = new FileOutputStream(file);
//初始化序列号器指定xml数据写到哪个文件,并且指定文件的编码方式
serializer.setOutput(os, "utf-8");
serializer.startDocument("utf-8", true);
serializer.startTag(null, "smss"); for (SMSInfo info : smsinfo) {
serializer.startTag(null, "sms");
serializer.attribute(null, "id", info.getId()+""); serializer.startTag(null, "body");
serializer.text(info.getBody());
serializer.endTag(null, "body"); serializer.startTag(null, "address");
serializer.text(info.getAddress());
serializer.endTag(null, "address"); serializer.startTag(null, "type");
serializer.text(info.getType()+"");
serializer.endTag(null, "type")
;
serializer.startTag(null, "data");
serializer.text(info.getDate()+"");
serializer.endTag(null, "data");
serializer.endTag(null, "sms"); }
serializer.endTag(null, "smss");
serializer.endDocument();
os.close();
Toast.makeText(this, "备份2成功", Toast.LENGTH_SHORT).show();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
} }
3、建立SMSInfo类
/**
*
*/
package com.hyzhou.xmldemo; public class SMSInfo { private long date;
private int type;
private String body;
private String address;
private int 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;
} public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public SMSInfo() {
super();
// TODO Auto-generated constructor stub
} public SMSInfo(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;
} }
附件:
back.xml结果展示
<?xml version="1.0"?>
-<smss>-<sms><address>1571132</address><type>-544540687</type><body>短信内容0</body><date>短信内容0</date></sms>-<sms><address>1571133</address><type>-929821098</type><body>短信内容1</body><date>短信内容1</date></sms>-<sms><address>1571134</address><type>-467001032</type><body>短信内容2</body><date>短信内容2</date></sms>-<sms><address>1571135</address><type>-473096343</type><body>短信内容3</body><date>短信内容3</date></sms>-<sms><address>1571136</address><type>-1370139761</type><body>短信内容4</body><date>短信内容4</date></sms>-<sms><address>1571137</address><type>507788169</type><body>短信内容5</body><date>短信内容5</date></sms>-<sms><address>1571138</address><type>-995243383</type><body>短信内容6</body><date>短信内容6</date></sms>-<sms><address>1571139</address><type>-1178397444</type><body>短信内容7</body><date>短信内容7</date></sms>-<sms><address>1571140</address><type>964211414</type><body>短信内容8</body><date>短信内容8</date></sms>-<sms><address>1571141</address><type>103006854</type><body>短信内容9</body><date>短信内容9</date></sms></smss>
back2.xml结果展示
<?xml version="1.0" encoding="UTF-8" standalone="true"?>
-<smss>-<sms id="0"><body>短信内容0</body><address>1571132</address><type>-812319933</type><data>1381977444649</data></sms>-<sms id="1"><body>短信内容1</body><address>1571133</address><type>-1196295931</type><data>1381977444650</data></sms>-<sms id="2"><body>短信内容2</body><address>1571134</address><type>-1295888851</type><data>1381977444650</data></sms>-<sms id="3"><body>短信内容3</body><address>1571135</address><type>16784268</type><data>1381977444650</data></sms>-<sms id="4"><body>短信内容4</body><address>1571136</address><type>1005445253</type><data>1381977444650</data></sms>-<sms id="5"><body>短信内容5</body><address>1571137</address><type>1067452916</type><data>1381977444650</data></sms>-<sms id="6"><body>短信内容6</body><address>1571138</address><type>-293587603</type><data>1381977444650</data></sms>-<sms id="7"><body>短信内容7</body><address>1571139</address><type>1221438355</type><data>1381977444650</data></sms>-<sms id="8"><body>短信内容8</body><address>1571140</address><type>-1126016278</type><data>1381977444651</data></sms>-<sms id="9"><body>短信内容9</body><address>1571141</address><type>314137807</type><data>1381977444651</data></sms></smss>
xml文件的序列化示例的更多相关文章
- Android中XML文件的序列化生成与解析
xml文件是非常常用的,在android中json和xml是非常常用的两种封装数据的形式,从服务器中获取数据也经常是这两种形式的,所以学会生成和解析xml和json是非常有用的,json相对来说是比较 ...
- android-pull方式解析xml文件以及XML文件的序列化
android解析XML ---------------------------基础要像磐石 在android平台上可以使用SAX.DOM和自带的Pull解析器解析xml文件,本文主要介绍使用pull ...
- Android学习记录(1)—Android中XML文件的序列化生成与解析
xml文件是非常常用的,在android中json和xml是非常常用的两种封装数据的形式,从服务器中获取数据也经常是这两种形式的,所以学会生成和解析xml和json是非常有用的,json相对来说是比较 ...
- [android] xml文件的序列化
生成xml文件,模拟备份短信,创建短信的业务bean,创建一个domain的包放业务bean,这个业务bean里面,定义成员属性,生成get set方法,生成有参和无参的构造方法. 生成随机数,实例化 ...
- xml文件的生成
关于android中自定义xml文件的生成,请看示例代码(主要来源于黑马教程): import java.io.File; import java.io.FileNotFoundException; ...
- .NET下XML文件的读写
一.前言: XML是微软.Net战略的一个重要组成部分,而且它可谓是XML Web服务的基石,所以掌握.Net框架下的XML技术自然显得非常重要了.本文将指导大家如何运用C#语言完成.Net框架下的X ...
- XML文件操作指南
一.XML简介 XML的全名是eXtensible Markup Language(可以扩展的标记语言),它的语法类似HTML,都是用标签来描述数据.HTML的标签是固定的,我们只能使用.不能修改: ...
- C# - 操作大型XML文件
对于小型XML文件,利用XDocument和XMLDocument可以很方便进行读写(推荐XDocument),但问题是XDocument和XMLDocument是In-Memory类型的,随着文件大 ...
- WebAPI调用笔记 ASP.NET CORE 学习之自定义异常处理 MySQL数据库查询优化建议 .NET操作XML文件之泛型集合的序列化与反序列化 Asp.Net Core 轻松学-多线程之Task快速上手 Asp.Net Core 轻松学-多线程之Task(补充)
WebAPI调用笔记 前言 即时通信项目中初次调用OA接口遇到了一些问题,因为本人从业后几乎一直做CS端项目,一个简单的WebAPI调用居然浪费了不少时间,特此记录. 接口描述 首先说明一下,基于 ...
随机推荐
- android控制软键盘弹出方式
android一把自带的软键盘弹出方式是会将布局顶上去,造成UI乱套的情况. 解决办法:方法一:在你的activity中的oncreate中setContentView之前写上这个代码getWindo ...
- 【转】MySQL分库分表数据迁移工具的设计与实现
一.背景 MySQL作为最流行的关系型数据库产品之一,当数据规模增大遭遇性能瓶颈时,最容易想到的解决方案就是分库分表.无论是进行水平拆分还是垂直拆分,第一步必然需要数据迁移与同步.由此可以衍生出一系列 ...
- linux下udev简介
一.关于Udev u即user space,dev是device,通过它的名字,我们就可以简单了解到,它是一个和用户态相关的驱动设备管理机制.udev是一个针对2.6内核的文件系统.提供一种基于用户空 ...
- C++视频课程
一.视频课程 课程名称:C++学习教程 程序设计 C++基础教程 授课人:郭宏志 课程链接:http://study.163.com/course/courseMain.htm?courseId=63 ...
- Linux中的链接文件_软链接和硬链接
一.链接文件介绍 Linux操作系统中的“链接文件”分为硬链接(hard link)和软链接(symbolic link).两种链接的本质区别在于inode.以下是详细介绍: 硬链接:当系统要读取一个 ...
- Unity下Iso和Persp两种模式的区别
Iso模式 平行视野.在Iso模式下,不论物体距离摄像头远近都给人的感觉是一样大的. Persp模式 透视视野.在persp模式下,物体在scene界面上所呈现的画面是给人一种距离摄像头近的物体显示的 ...
- JDBC Statements, PreparedStatement和CallableStatement语句
当获得了与数据库的连接后,就可以与数据库进行交互了. JDBC Statement,CallableStatement和PreparedStatement接口定义了可用于发送SQL或PL/SQL命令, ...
- ZooKeeper系列
Zookeeper系列(一) ZooKeeper系列(二) ZooKeeper系列(三) ZooKeeper系列(四)
- OpenStack Keystone架构
一. Keystone简介 1. OpenStack Keystone简介 2. Keystone安装与部署 2.1 包安装Keystone 2.2 源码安装源码安装 3 配置运行Keystone 3 ...
- James Whittaker的软件測试戒律(二)
摘录自<探索式软件測试>(注:作者模仿了圣经十诫的语气和内容编写了软件測试戒律) 1.汝应用大量输入重复锤炼汝之应用程序 2.汝应贪图汝之邻居的应用程序 3.汝应亲自寻找睿智的预言家 4. ...