第一种 字符串拼凑
package com.itheima.generatexml;public class Sms { PRivate String address; private String body; private String date; public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getBody() { return body; } public void setBody(String body) { this.body = body; } public String getDate() { return date; } public void setDate(String date) { this.date = date; } }package com.itheima.generatexml;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.lang.reflect.Field;import java.util.ArrayList;import java.util.List;import android.os.Bundle;import android.os.Environment;import android.app.Activity;import android.view.Menu;import android.view.View;public class MainActivity extends Activity { private List<Sms> smsLists; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //[1]初始化我们要备份的数据 smsLists = new ArrayList<Sms>(); for (int i = 0; i < 10; i++) { Sms sms =new Sms(); sms.setAddress("10008"+i); sms.setBody("nihao"+i); sms.setDate("201"+i); //[2]把sms对象加入到 集合中 smsLists.add(sms); } } //点击按钮 通过StringBuffer 的方式生成一个xml文件 public void click(View v){ //[1]创建sb对象 StringBuffer sb = new StringBuffer(); //[2]开始组拼xml文件头 sb.append("<?xml version=/"1.0/" encoding=/"utf-8/"?>"); //[3]开始组拼xml根节点 sb.append("<smss>"); //[4]开始组拼sms节点 for (Sms sms : smsLists) { sb.append("<sms>"); //[5]开始组拼address节点 sb.append("<address>"); sb.append(sms.getAddress()); sb.append("</address>"); //[6]开始组拼body节点 sb.append("<body>"); sb.append(sms.getBody()); sb.append("</body>"); //[7]开始组拼date节点 sb.append("<date>"); sb.append(sms.getDate()); sb.append("</date>"); sb.append("</sms>"); } sb.append("</smss>"); //[8]把数据保存到sd卡中 try { File file = new File(Environment.getExternalStorageDirectory().getPath(),"smsbackup.xml"); FileOutputStream fos = new FileOutputStream(file); fos.write(sb.toString().getBytes()); fos.close();//关闭流 } catch (Exception e) { e.printStackTrace(); } } }第二种 XmlSerializer实现package com.itheima.generatexml;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.lang.reflect.Field;import java.util.ArrayList;import java.util.List;import org.xmlpull.v1.XmlSerializer;import android.os.Bundle;import android.os.Environment;import android.app.Activity;import android.util.Xml;import android.view.Menu;import android.view.View;import com.itheima.generatexml2.R;public class MainActivity extends Activity { private List<Sms> smsLists; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //[1]初始化我们要备份的数据 smsLists = new ArrayList<Sms>(); for (int i = 0; i < 10; i++) { Sms sms =new Sms(); sms.setAddress("10008"+i); sms.setBody("nihao"+i); sms.setDate("201"+i); //[2]把sms对象加入到 集合中 smsLists.add(sms); } } //点击按钮 通过的XmlSerializer方式生成一个xml文件 public void click(View v){ try { //[1]获取XmlSerializer 类的实例 通过Xml这个工具类去获取 XmlSerializer serializer = Xml.newSerializer(); //[2]设置 xmlserializer序列化器参数 File file = new File(Environment.getExternalStorageDirectory().getPath(),"smsbackup2.xml"); FileOutputStream fos = new FileOutputStream(file); serializer.setOutput(fos, "utf-8"); //[3]开始写xml文档开头 serializer.startDocument("utf-8", true); //[4]写 xml的根节点 namespace 命名空间 serializer.startTag(null, "smss"); //[5]循环写 sms节点 for (Sms sms : smsLists) { serializer.startTag(null, "sms"); // [6]开始address节点 serializer.startTag(null, "address"); serializer.text(sms.getAddress()); serializer.endTag(null,"address"); // [7]开始body节点 serializer.startTag(null, "body"); serializer.text(sms.getBody()); serializer.endTag(null,"body"); // [8]开始date节点 serializer.startTag(null, "date"); serializer.text(sms.getDate()); serializer.endTag(null,"date"); //sms节点结束 serializer.endTag(null, "sms"); } serializer.endTag(null, "smss"); //写文档结尾 serializer.endDocument(); fos.close();//关闭流 } catch (Exception e) { e.printStackTrace(); } } }
新闻热点
疑难解答