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();
}
}
});
}
}
下面是一个信息类,包含必要的信息元素:
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();
}
}
});
}
}
相关文章推荐
- Android程序调试时生成main.out.xml文件问题,及完美解决方案.
- Android(java)学习笔记185:xml文件生成
- Android命令生成编译出build.xml文件
- Android工程自动生成build.xml文件,并使用Ant打包Android工程
- android findview 自动生成工具 xml布局文件自动转换类模板代码工具
- Android程序调试时生成main.out.xml文件
- Android命令生成编译出build.xml文件
- android利用pull技术来解析和生成xml文件
- Android-解析/生成xml、文件读写、数据库操作
- android编译时生成了一个 main.out.xml文件,无法编译的解决办法
- 使用ant让Android自动打包的build.xml,自动生成签名的apk文件(支持android4.0以上的版本)
- ANDROID笔记:利用XML布局文件生成Menu
- android 生成、pull解析xml文件
- android开发步步为营之24:milliondollars游戏技术要点代码生成控件和读取xml文件
- [转]使用ant让Android自动打包的build.xml,自动生成签名的apk文件(支持android4.0以上的版本)
- Android利用dimens.xml进行适配,使用代码生成不同的dimens.xml文件
- 使用ant让Android自动打包的build.xml,自动生成签名的apk文件(支持android4.0以上的版本)
- Android-使用DOM解析与生成XML文件
- Android 解析和生成XML文件
- Android利用dimens.xml进行适配,使用代码生成不同的dimens.xml文件