生成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. visual studio 2015 Opencv 3.4.0配置

    因为想做AR方面,需要了解计算机视觉知识,决定从opencv开始入门,在网上买了本毛星云的<Opencv3编程入门>开始自学. 一.opencv 3.4.0下载安装 在官网http://o ...

  2. 【阿里聚安全·安全周刊】Intel芯片级安全漏洞事件|macOS存在漏洞

    关键词:Intel漏洞丨mac OS漏洞丨三星漏洞丨安卓安全丨CPU漏洞丨phpMyAdmin漏洞丨iOS设备|安卓恶意软件检测|Burpsuite   本周资讯top3 [Intel漏洞]芯片级安全 ...

  3. Codeforces Round #554 (Div. 2) 1152B. Neko Performs Cat Furrier Transform

    学了这么久,来打一次CF看看自己学的怎么样吧 too young too simple 1152B. Neko Performs Cat Furrier Transform 题目链接:"ht ...

  4. scws简单中文分词

    demo如下: /** * 中文分词 * @param $keyword * @param $getTop * @param $limit * @return array */ function sp ...

  5. RocketMQ入门手册

    前言 继我上一篇博客后 分布式消息队列RocketMQ学习教程① 上一篇博客最主要介绍了几种常用的MQ,所以本博客再简单介绍一下RocketMQ的原理和简单的例子,基于Java实现,希望可以帮助学习者 ...

  6. 【PHP篇】数组

    1.简介:数组存储方式是键值对 2.声明:$数组变量名=array(2,3,9,3,“546”,“yy”=>”hhhh”,100=>”uu100”): 3.下标注意:可为“字符串”或者整数 ...

  7. [NOI2009] 管道取珠

    sum a[i]*a[i]可以理解为两个独立但同时进行的游戏得到同一个输出序列的方案数. 设f[l,i,j]为每个游戏都已经推出了l个珠子时,第一个游戏里上边儿的管道已经推出了i个,第二个游戏中上边儿 ...

  8. Django -- 发送HTML格式的邮件

    提前在setting中设置邮箱server from django.core.mai import EmailMessage subject, from_email, to = 'xxx', 'nor ...

  9. [Java 泥水匠] Java Components 之一:Java String (肯定有你不懂的)

    作者:泥沙砖瓦浆木匠网站:http://blog.csdn.net/jeffli1993个人签名:打算起手不凡写出鸿篇巨作的人,往往坚持不了完成第一章节. 1.1 前言 说起String,大家最熟悉不 ...

  10. windows关闭占用某端口的进程

    第一步:获取该端口进程PID 第二步:获取该PID进程映像名称 第三部:关闭进程