package
com.banana.xmL.Utils;
/*
* 生成对象
*/
public
class
Sms {
public
int
id;
public
String
number;
public
String
msg;
public
String
date;
public
Sms(){}
public
Sms(int
id,String number,String msg,String date){
this.id
= id;
this.number
= number;
this.msg
= msg;
this.date
= date;
}
}
-------------------------------------------------
package
com.banana.xmL.Utils;
import
java.util.ArrayList;
import
java.util.List;
/*
* 存储对象
*/
public
class
SmsDao {
public
static
List<Sms> getAllSms() {
List<Sms> list =
new
ArrayList<Sms>();
list.add(new
Sms(1,"110","维护治安","2016.1.1"));
list.add(new
Sms(2,"120","救人","2016.2.1"));
list.add(new
Sms(3,"119","救火","2016.3.1"));
return
list;
}
}
-------------------------
package
com.banana.xmL.Utils;
import
java.io.FileOutputStream;
import
java.io.IOException;
import
java.io.InputStream;
import
java.util.ArrayList;
import
java.util.List;
import
org.xmlpull.v1.XmlPullParser;
import
org.xmlpull.v1.XmlSerializer;
/*
* 生成xml
XmlSerializer
*/
import
android.content.Context;
import
android.content.res.AssetManager;
import
android.util.Log;
import
android.util.Xml;
public
class
SmsUtils {
public
static
boolean
backupSms_android(Context context){
List<Sms> list = SmsDao.getAllSms();
//1通过android.util.Xml获取一个XmlSerializer对象
XmlSerializer xs = Xml.newSerializer();
//2设置XmlSerializer的一些参数,
//os:xml文件写入流
endoing:流的编码
try{
xs.setOutput(context.openFileOutput("backupSms2.xml",Context.MODE_PRIVATE),"utf_8");
//3.序列化一个xml的声明头
encoding:xml文件的编码 standalone:是否独立
xs.startDocument("utf-8",true);
//4序列化一个根节点开始节点
xs.startTag(null,
"Smss");
for(Sms
sms : list){
xs.startTag(null,
"Sms");
xs.attribute(null,
"id", sms.id+"");
xs.startTag(null,
"numer");
xs.text(sms.number);
xs.endTag(null,
"numer");
xs.startTag(null,
"msg");
xs.text(sms.msg);
xs.endTag(null,
"msg");
xs.startTag(null,"date");
xs.text(sms.date);
xs.endTag(null,
"date");
xs.endTag(null,
"Sms");
}
//序列化 一个根节点的结束节点
xs.endTag(null,
"Smss");
//将xml写入文件,完成序列化
xs.endDocument();
return
true;
}catch
(Exception e) {
//
TODO: handle exception
}
return
false;
}
public
static
boolean
backupSms(Context context) {
//获取信息
List<Sms> list = SmsDao.getAllSms();
//生成xml
StringBuffer sb =
new
StringBuffer();
sb.append("<?xml
version='1.0' encoding='utf-8' standalone='yes'?>");
sb.append("<Smss>");
for(Sms
sms : list){
sb.append("<Sms
id=\""+sms.id+"\">");
sb.append("<number>");
sb.append(sms.number);
sb.append("</number>");
sb.append("<msg>");
sb.append(sms.msg);
sb.append("</msg>");
sb.append("<date>");
sb.append(sms.date);
sb.append("</date>");
sb.append("</Sms>");
}
sb.append("</Smss>");
//备份数据到私有目录
FileOutputStream fos =
null;
String str = sb.toString();
Log.i("SmsUtils",
"......................"+fos+str);
try
{
fos=context.openFileOutput("backupsms.xml",
Context.MODE_PRIVATE);
Log.i("SmsUtils",
"......................"+fos);
fos.write(str.getBytes());
return
true;
}
catch
(Exception e) {
//
TODO
Auto-generated catch block
e.printStackTrace();
}finally{
if(fos!=null){
try
{
fos.close();
}
catch
(IOException e) {
//
TODO
Auto-generated catch block
e.printStackTrace();
}
}
}
return
false;
}
//解析读取内容
public
static
int
restoreSms(Context mcontext) {
List<Sms> list =
null;
Sms sms =
null;
try{
//1.通过Xml湖区一个XmlPullParser对象
XmlPullParser xpp = Xml.newPullParser();
//2.设置参数,
/*//通过context获得一个资产管理对象
AssetManager assets = mcontext.getAssets();
//通过资产对象获取文件读取流
InputStream ins = assets.open("backupSms2.xml");
xpp.setInput(ins, "UTF-8");*/
xpp.setInput(mcontext.openFileInput("backupsms.xml"),"utf-8");
//3获取当前事件类型
int
type = xpp.getEventType();
//4.判断事件类型是否文档结束类型,如果不是循环解析,获取下一行时间按类型
while(type!=XmlPullParser.END_DOCUMENT){
String curTagName = xpp.getName();
//判断当前是开始标签还是结束标签
switch(type){
case
XmlPullParser.START_TAG:
if("Smss".equals(curTagName)){
//判断如果是Smss则创建集合
list =
new
ArrayList<Sms>();
}else
if("Sms".equals(curTagName)){
sms =
new
Sms();
sms.id
= Integer.valueOf(xpp.getAttributeValue(null,"id"));
}else
if("number".equals(curTagName)){
sms.number
= xpp.nextText();
}else
if("msg".equals(curTagName)){
sms.msg
= xpp.nextText();
}else
if("date".equals(curTagName)){
sms.date
= xpp.nextText();
}
break;
case
XmlPullParser.END_TAG:
//当前是结束标签Sms则加入list
if("Sms".equals(curTagName)){
list.add(sms);
}
break;
}
type = xpp.next();//获取下一行事件类型
}
return
list.size();
}catch
(Exception e) {
//
TODO: handle exception
}
return
0;
}
}
1万+

被折叠的 条评论
为什么被折叠?



