android基础(9):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"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

tools:context=".MainActivity" >

<Button

android:id="@+id/bt"

android:onClick="backSms"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="短信备份" />

<Button

android:layout_below="@id/bt"

android:onClick="backSms2"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="第二种方式短信备份" />

</RelativeLayout>

二:虚拟一个短信信息类SmsInfo.java

package com.cloud.sms;

public class SmsInfo {

private long date;

private int type;

private String body;

private String address;

private int id;

public SmsInfo() {

}

public SmsInfo(long date, int type, String body, String address,int id) {

this.date = date;

this.type = type;

this.body = body;

this.address = address;

this.id=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;

}

}

三:编写主程序代码

package com.example.xml1;

import java.io.File;

import java.io.FileOutputStream;

import java.util.ArrayList;

import java.util.List;

import java.util.Random;

import org.xmlpull.v1.XmlSerializer;

import com.cloud.sms.SmsInfo;

import android.os.Bundle;

import android.os.Environment;

import android.app.Activity;

import android.util.Xml;

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=1350000000;

for(int i=0;i<10;i++){

smsInfo.add(new SmsInfo(System.currentTimeMillis(),random.nextInt(2)+1,

"短信内容"+i,Long.toString(number+i),i));

}

}

/**

* 备份手机的短信

* @param v

*/

public void backSms(View v){

//xml格式进行备份文件

StringBuilder sb=new StringBuilder();

sb.append("<?xml version=\"1.0\" encoding=\"utf-8\" ?>");

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.getDate());

sb.append("</date>");

sb.append("</sms>");

}

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) {

// TODO Auto-generated catch block

e.printStackTrace();

Toast.makeText(this, "备份失败", 0).show();

}

}

public void backSms2(View v){

try {

XmlSerializer serializer= Xml.newSerializer();

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 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, "date");

serializer.text(info.getDate()+"");

serializer.endTag(null, "date");

serializer.endTag(null, "sms");

}

serializer.endTag(null, "smss");

os.close();

Toast.makeText(this, "备份成功", 0).show();

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

Toast.makeText(this, "备份失败", 0).show();

}

}

}

四:该程序使用的权限

android.permission.WRITE_EXTERNAL_STORAGE

五:程序运行结果

版权声明:博主原创文章,转载请说明出处。http://blog.csdn.net/dzy21

时间: 2024-11-07 20:41:08

android基础(9):xml文件的序列化的相关文章

Android shape的xml文件

Android shape的xml文件可以写不同形状.背景.边框.圆角等等效果,可以代替不少. 9图片的使用,缩小资源文件的大小.下面看一下shape可以包含的内容有哪些. 1 <?xml version="1.0" encoding="utf-8"?> 2 <shape 3 xmlns:android="http://schemas.android.com/apk/res/android" 4 android:shape=[&

解决Android中fragment_main.xml文件中的组件获取的问题

package com.dhy.phonedial; import android.app.Activity; import android.app.Fragment; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.LayoutInflater; import android.view.Menu; import android.view.Me

Android中layout.xml文件中加载自定义的View类

<com.bn.summer.GGView3 android:layout_width="100dip" android:layout_height="114dip" android:layout_marginLeft="11dip" /> View类的实现: package com.bn.summer; import android.content.Context; import android.content.res.Resour

android 中生成xml文件

在Android中生成xml文件真的很简单,下面提供2中方法,一种是通过String写入到文件,另外一种是通过XML 的 XmlSerializer. 以后遇到Android写xml内容就不会困惑了 1.通过string写入文件 String name=mEtName.getText().toString(); String age=mEtAge.getText().toString(); String Id=mEtID.getText().toString(); File file=new F

修改Android中strings.xml文件, 动态改变数据

有些朋友可能会动态的修改Android中strings.xml文件中的值,在这里给大家推荐一种简单的方法.strings.xml中节点是支持占位符的,如下所示: <string name="data">整数型:%1$d,浮点型:%2$.2f,字符串:%3$s</string> 其中%后面是占位符的位置,从1开始, $ 后面是填充数据的类型         %d:表示整数型:         %f :表示浮点型,其中f前面的.2 表示小数的位数         %

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

首先,我把Person的实体类 package net.loonggg.test; public class Person { private int id; private String age; private String name; private String sex; private String address; public int getId() { return id; } public void setId(int id) { this.id = id; } public

Android程序解析XML文件的方法及使用PULL解析XML案例

一.一般解析XML文件的方法有SAX和DOM.PULL (1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合.这个层次结构允许开发人员在树中寻找特定信息.分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作.由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的.DOM 以及广义的基于树的处理具有几个优点.首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构

Android中生成xml文件

xml可以用来备份文件数据 Android中xml的读写 通常把数据封装到对象中,然后通过对象俩操作数据.包名不能使用Android或Java的关键字. 当一个应用被删除时,该应用在内部存储空间内的所有数据都会被删除,而应用在外部存储空间的数据不会被删除.备份文件一般都放在外部存储空间中. 对于xml文件的校验,可以把xml文件放到浏览器中去解析,如果能够正常解析说明xml文件是正确的. 短信备份案例: activity_main.xml <RelativeLayout xmlns:androi

android XMLPullParser读取xml文件

由于刚学Android,用的开发工具是Android studio,没用过eclipse的那个开发Android,所以针对有些说由于2个IDE的路径不通导致的文件读取不到,不做分析(实际上是没法分析eclipse里的),这个博文只针对AS用户. 我们的资源文件,除了放到res目录下之外,还可以放在跟java .res同级的asserts(新建的)目录里. 今天要解析的这个xml就是在这个目录下的. 首先说一下xmlpullparser,这个pull解析是基于事件的模式.比如 读取到xml的开始声

【转】android中string.xml文件的使用

1.在程序中获取string.xml中字符串和数值 <?xml version="1.0" encoding="utf-8"?><resources>    <string name="hello">Hello World, MainActivity!</string>    <string name="app_name">TestExample01</stri