您的位置:首页 > 移动开发 > Android开发

Android生成XML文件

2013-08-19 20:48 239 查看
        两种方式生成XML文件,一种是直接用字符写入,还有一种用序列化器XmlSerislizer生成:

下面是一个信息类,包含必要的信息元素:

public class SmsInfo {

private long date;
private int type;
private String body;
private String address;
int id;

public SmsInfo(){

}

public SmsInfo(long date, int type, String body, String address, int id) {
super();
this.date = date;
this.type = type;
this.body = body;
this.address = address;
this.id = id;
}
public int getId() {
return id;
}

public void setId(int id) {
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;
}

}


下面的java文件,有两个按钮,分别实现生成XML文件的两种方式:
public class MainActivity extends Activity {

private List<SmsInfo> smsInfos;
private Button btn_one, btn_two;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

smsInfos = new ArrayList<SmsInfo>();
//产生随机数
Random random = new Random();
Long number = 0L;

//初始化10条信息内容
for(int i=0; i<10; i++){
SmsInfo si = new SmsInfo(
System.currentTimeMillis(), //日期
random.nextInt(2)+1, //类型
"短信内容"+i, //短信内容
Long.toString(number), //地址
i); //id
smsInfos.add(si);
}

btn_one = (Button)findViewById(R.id.one);
btn_two = (Button)findViewById(R.id.two);

btn_one.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
StringBuilder sb = new StringBuilder();
sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
sb.append("<smss>");

for(SmsInfo info: smsInfos){
sb.append("<sms>");

sb.append("<data>");
sb.append(info.getDate());
sb.append("</data>");

sb.append("<type>");
sb.append(info.getType());
sb.append("</type>");

sb.append("<body>");
sb.append(info.getBody());
sb.append("</body>");

sb.append("<address>");
sb.append(info.getAddress());
sb.append("</address>");

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

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

File file = new File(Environment.getExternalStorageDirectory(), "backup.xml");
FileOutputStream fos;
try {
fos = new FileOutputStream(file);
fos.write(sb.toString().getBytes());
fos.close();
Toast.makeText(MainActivity.this, "备份成功", Toast.LENGTH_LONG).show();
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(MainActivity.this, "备份失败", Toast.LENGTH_LONG).show();
}

}
});

btn_two.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
XmlSerializer serializer = Xml.newSerializer();
File file = new File(Environment.getExternalStorageDirectory(), "backup1.xml");
FileOutputStream fos;
try {
fos = new FileOutputStream(file);
//初始化序列化器,指定xml数据写入到那个文件 并且指定文件的编码方式
serializer.setOutput(fos, "utf-8");

serializer.startDocument("utf-8", true);

serializer.startTag(null, "smss");
for(SmsInfo info: smsInfos){
serializer.startTag(null, "sms");
serializer.attribute(null, "id", info.getId()+"");

serializer.startTag(null, "date");
serializer.text(info.getDate()+"");
serializer.endTag(null, "date");

serializer.startTag(null, "type");
serializer.text(info.getType()+"");
serializer.endTag(null, "type");

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.endTag(null, "sms");
}

serializer.endTag(null, "smss");
serializer.endDocument();
fos.close();

Toast.makeText(MainActivity.this, "备份完成", Toast.LENGTH_LONG).show();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
Toast.makeText(MainActivity.this, "备份失败", Toast.LENGTH_LONG).show();
}
}
});
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: