[android] xml文件的序列化
生成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文件的序列化的更多相关文章
- 《!--suppress ALL --> 在Android XML 文件中的用途是什么?
<!--suppress ALL --> 在Android XML 文件中的用途是什么? 警告一次又一次地出现在谷歌地图的 XML 文件中,但是当我使用时,所有警告都被禁用.那么压制所有评 ...
- Android中XML文件的序列化生成与解析
xml文件是非常常用的,在android中json和xml是非常常用的两种封装数据的形式,从服务器中获取数据也经常是这两种形式的,所以学会生成和解析xml和json是非常有用的,json相对来说是比较 ...
- Android学习记录(1)—Android中XML文件的序列化生成与解析
xml文件是非常常用的,在android中json和xml是非常常用的两种封装数据的形式,从服务器中获取数据也经常是这两种形式的,所以学会生成和解析xml和json是非常有用的,json相对来说是比较 ...
- android-pull方式解析xml文件以及XML文件的序列化
android解析XML ---------------------------基础要像磐石 在android平台上可以使用SAX.DOM和自带的Pull解析器解析xml文件,本文主要介绍使用pull ...
- android xml文件
一.布局文件:在layout目录下,使用比较广泛: 我们可以为应用定义两套或多套布局,例如:可以新建目录layout_land(代表手机横屏布局),layout_port(代表手机竖屏布局),系统会根 ...
- Android XML文件解析
在Android平台上可以使用Simple API for XML(SAX) . Document Object Model(DOM)和Android附带的pull解析器解析XML文件. 下面是本例子 ...
- 006 Android XML 文件布局及组件属性设置技巧汇总
1.textview 组件文本实现替换(快速实现字符资源的调用) android 应用资源位置在 project(工程名)--->app--->res--->values 在stri ...
- 004 Android XML文件常用五大页面布局方式
1.线性布局(LinearLayout)最常用 <1>使用线性布局,首先在xml文件中修改布局为LinearLayout 修改完成后,可在Component Tree中看见如下内容: &l ...
- xml文件的序列化示例
1.创建activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/andr ...
随机推荐
- win32控制台程序 宽字符与短字符转化
由于vs各版本之间存在字符设置不兼容问题,特总结char与tchar的互相转换函数,如下,在之后的工程中可以使用. void TcharToChar(const TCHAR * tchar, char ...
- “PurMVC”在Unity中的应用
序章: 这是"游戏设计进阶技巧篇"内容,游戏中不使用如下技巧也可以正常运行,但是有了它以后可以增加项目的可读性,使功能”模块化“,”可视化“,”装逼化“(慢慢的恶意>,> ...
- 使用PowerShell快速部署Win12R2虚拟化桌面
PowerShell一直是微软windows_Server产品中重要的一部分,可以通过PowerShell来完成所有的服务器配置,甚至一些在图形界面下无法完成的事情.随着每一个新版本的微软产品或者服务 ...
- 制作系统U盘
没有任何宣传软件成分昂,我就是这做的. 1.在百度搜索上搜索“通用PE大师”,点开了这个网站http://up.6615261.cn/index.html,打开之后如下图,下载这个二合一版本 2.在电 ...
- CS61A hw01
前不久在知乎上看到CS61A 和CS61B spring18 开课的消息.上去看了一眼,发现真的不错,所有proj hw都可以本地测试!也就是说除了没有课程成绩和官方讨论区和TA解答外,这个课完全可以 ...
- 省钱版----查找 IoT 设备TTL线序__未完待续
作者:仙果 原文来自:省钱版—-查找 IoT 设备TTL线序 省钱版----查找 IoT 设备TTL线序__未完待续 缘由 在IoT固件调试分析的过程中,建议首先在IoT设备的板子上焊接调试线,这是能 ...
- navicat连接mysql报错1251的解决方法
1.新安装的mysql8,使用破解版的navicat连接的时候一直报错,如图所示: 2.网上查找原因发现是mysql8 之前的版本中加密规则是mysql_native_password,而在mysql ...
- MySQL、MariaDB修改默认字符集
修改2017.4.9: 最近在使用MariaDB,遇到了同样的问题:中文乱码.因为mariadb他有好几个ini文件,但是可以根据自己开发需要创建一个my.ini,然后我试着去修改mariadb安装目 ...
- java.util.regex包下的Pattern类和Matcher类的使用总结
一.介绍 Java正则表达式通过java.util.regex包下的Pattern类与Matcher类实现1.Pattern类用于创建一个正则表达式,也可以说创建一个匹配模式,它的构造方法是私有的,不 ...
- 使用 pandas 导出数据
import pandas as pd # In[58]: df = pd.DataFrame(houselist) # In[59]: df # In[61]: df.to_csv('lianjia ...