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

生成随机数,实例化Random,调用Random对象的nextInt(n)方法,生成0到n之间的随机数,获取当前系统的时间戳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<SmsInfo> smsInfos;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
smsInfos=new ArrayList<SmsInfo>();
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("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
sb.append("<smss>");
for(SmsInfo sms:smsInfos){
sb.append("<body>"+sms.getMessage()+"</body>");
sb.append("<date>"+sms.getDate()+"</date>");
sb.append("<type>"+sms.getType()+"</type>");
sb.append("<tel>"+sms.getAddress()+"</tel>");
}
sb.append("</smss>");
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;
} }

[android] xml文件的序列化的更多相关文章

  1. 《!--suppress ALL --> 在Android XML 文件中的用途是什么?

    <!--suppress ALL --> 在Android XML 文件中的用途是什么? 警告一次又一次地出现在谷歌地图的 XML 文件中,但是当我使用时,所有警告都被禁用.那么压制所有评 ...

  2. Android中XML文件的序列化生成与解析

    xml文件是非常常用的,在android中json和xml是非常常用的两种封装数据的形式,从服务器中获取数据也经常是这两种形式的,所以学会生成和解析xml和json是非常有用的,json相对来说是比较 ...

  3. Android学习记录(1)—Android中XML文件的序列化生成与解析

    xml文件是非常常用的,在android中json和xml是非常常用的两种封装数据的形式,从服务器中获取数据也经常是这两种形式的,所以学会生成和解析xml和json是非常有用的,json相对来说是比较 ...

  4. android-pull方式解析xml文件以及XML文件的序列化

    android解析XML ---------------------------基础要像磐石 在android平台上可以使用SAX.DOM和自带的Pull解析器解析xml文件,本文主要介绍使用pull ...

  5. android xml文件

    一.布局文件:在layout目录下,使用比较广泛: 我们可以为应用定义两套或多套布局,例如:可以新建目录layout_land(代表手机横屏布局),layout_port(代表手机竖屏布局),系统会根 ...

  6. Android XML文件解析

    在Android平台上可以使用Simple API for XML(SAX) . Document Object Model(DOM)和Android附带的pull解析器解析XML文件. 下面是本例子 ...

  7. 006 Android XML 文件布局及组件属性设置技巧汇总

    1.textview 组件文本实现替换(快速实现字符资源的调用) android 应用资源位置在 project(工程名)--->app--->res--->values 在stri ...

  8. 004 Android XML文件常用五大页面布局方式

    1.线性布局(LinearLayout)最常用 <1>使用线性布局,首先在xml文件中修改布局为LinearLayout 修改完成后,可在Component Tree中看见如下内容: &l ...

  9. xml文件的序列化示例

    1.创建activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/andr ...

随机推荐

  1. 网络编程——I/O复用

    int select( int nfds, fd_set FAR* readfds, fd_set * writefds, fd_set * exceptfds, const struct timev ...

  2. weblogic 与项目jar冲突解决方案 ITsm部署

    部署时出现找不到类itims*****IMOType 时删除   2个fvsd-res-ws-1.0.ja,itims-fvsd-res-sync.jar jar包 里面的DeviceInfoPort ...

  3. 2017年全国大学生物联网设计竞赛(TI杯)华东分赛区决赛总结

    全国大学生物联网设计竞赛(TI杯)是由教育部高等学校计算机类教学指导委员会主办.上海交通大学电子信息与电气工程学院承办.德州仪器半导体技术公司(TI)协办的赛事,自2014年设立以来,一直是物联网领域 ...

  4. 背水一战 Windows 10 (115) - 后台任务: 通过 toast 激活后台任务, 定时激活后台任务

    [源码下载] 背水一战 Windows 10 (115) - 后台任务: 通过 toast 激活后台任务, 定时激活后台任务 作者:webabcd 介绍背水一战 Windows 10 之 后台任务 通 ...

  5. python模块的导入的两种方式区别详解

    Python 有两种导入模块的方法.两种都有用,你应该知道什么时候使用哪一种方法.一种方法,import module,另一种是from module import,下面是 from module i ...

  6. 微信小程序客服消息新增临时素材接口java实现

    今天想在微信小程序的客服信息窗口里回复用户一个图片信息,发现还需要上传素材,但是微信文档的上传临时素材接口写的模模糊糊,无奈去百度,网上清一色的PHP实现方式,难道我穿越了?PHP已经把java给超越 ...

  7. 如何把web.xml中的context-param、Servlet、Listener和Filter定义添加到SpringBoot中

    把传统的web项目迁移到SpringBoot中,少不了web.xml中的context-param.Servlet.Filter和Listener等定义的迁移. 对于Servlet.Filter和Li ...

  8. Python 函数中参数的分类及使用

    ######################非固定参数################## #第一种方式:def send_alert(msg,*users):##*users 是非固定参数,将传过来 ...

  9. JSP中的作用域

    application用于全局变量,可以获取全局的数据.作用范围比session大. JSP常用内置对象总结:out对象:用于客户端输出数据.request对象:用于处理客户端发送的请求的数据信息.r ...

  10. [EXP]IIS全版本提权工具

    工具: iislpe.exe 编译: .net 3.5 全版本IIS提权工具,支持IIS应用池用户/网络服务用户/本地服务用户 原理:       通过NTLM重放将权限提升至SYSTEM权限,详情参 ...