xml文件的生成
1 关于android中自定义xml文件的生成,请看示例代码(主要来源于黑马教程): 2 3 import java.io.File; 4 import java.io.FileNotFoundException; 5 import java.io.FileOutputStream; 6 import java.io.IOException; 7 import java.util.ArrayList; 8 import java.util.List; 9 10 import org.xmlpull.v1.XmlSerializer; 11 12 import android.app.Activity; 13 import android.os.Bundle; 14 import android.util.Xml; 15 import android.view.View; 16 17 18 public class MainActivity extends Activity { 19 //代表所有的短信对象. 20 private List<SmsInfo> smsInfos; 21 22 @Override 23 protected void onCreate(Bundle savedInstanceState) { 24 super.onCreate(savedInstanceState); 25 setContentView(R.layout.activity_main); 26 27 //模拟短信信息的初始化. 28 SmsInfo info1 = new SmsInfo("110", "有人掉水里了!", System.currentTimeMillis(), 1); 29 SmsInfo info2 = new SmsInfo("119", "有火情!", System.currentTimeMillis(), 1); 30 SmsInfo info3 = new SmsInfo("120", "路边有人产仔!!", System.currentTimeMillis(), 2); 31 32 smsInfos = new ArrayList<SmsInfo>(); 33 smsInfos.add(info1); 34 smsInfos.add(info2); 35 smsInfos.add(info3); 36 } 37 38 //直接在xml文件中绑定了activity中button的点击事件 39 public void click(View view){ 40 41 //这是java中的xml文件的生成方法,不过这种方法比较容易出错 42 // StringBuilder sb = new StringBuilder(); 43 // sb.append("<?xml version='1.0' encoding='utf-8' standalone='yes' ?>"); 44 // sb.append("<smss>"); 45 // for(SmsInfo smsinfo: smsInfos){ 46 // sb.append("<sms>"); 47 // } 48 49 try { 50 //得到一个xml文件的序列化器 51 XmlSerializer serializer = Xml.newSerializer(); 52 //初始化一些参数 53 File file = new File(getFilesDir(),"sms.xml"); 54 FileOutputStream os = new FileOutputStream(file); 55 serializer.setOutput(os, "utf-8"); 56 57 serializer.startDocument("utf-8", true); 58 serializer.startTag(null, "smss"); 59 60 for(SmsInfo smsInfo: smsInfos){ 61 serializer.startTag(null, "sms"); 62 63 serializer.startTag(null, "number"); 64 serializer.text(smsInfo.getNumber()); 65 serializer.endTag(null, "number"); 66 67 serializer.startTag(null, "content"); 68 serializer.text(smsInfo.getContent()); 69 serializer.endTag(null, "content"); 70 71 serializer.startTag(null, "time"); 72 serializer.text(smsInfo.getTime()+""); 73 serializer.endTag(null, "time"); 74 75 76 serializer.startTag(null, "type"); 77 serializer.text(smsInfo.getType()+""); 78 serializer.endTag(null, "type"); 79 80 81 serializer.endTag(null, "sms"); 82 } 83 84 serializer.endTag(null, "smss"); 85 serializer.endDocument(); 86 87 os.close(); 88 89 90 } catch (Exception e) { 91 e.printStackTrace(); 92 } 93 94 } 95 96 //定义一个短信的业务类 97 class SmsInfo { 98 99 private String number; 100 private String content; 101 private long time; 102 /** 103 * 1代表发送 104 * 2代表接受 105 */ 106 private int type; 107 108 public SmsInfo(String number, String content, long time, int type) { 109 this.number = number; 110 this.content = content; 111 this.time = time; 112 this.type = type; 113 } 114 115 public String getNumber() { 116 return number; 117 } 118 public void setNumber(String number) { 119 this.number = number; 120 } 121 public String getContent() { 122 return content; 123 } 124 public void setContent(String content) { 125 this.content = content; 126 } 127 public long getTime() { 128 return time; 129 } 130 public void setTime(long time) { 131 this.time = time; 132 } 133 public int getType() { 134 return type; 135 } 136 public void setType(int type) { 137 this.type = type; 138 } 139 140 } 141 142 } 143 144 总结android中生成自定义xml文件的方法: 145 146 1)首先必须先定义好xml文件的格式,包括各种标签及其结构、数量等;(草稿纸上完成) 147 148 2)通过 XmlSerializer serializer = Xml.newSerializer(); 得到一个xml文件的序列化器; 149 150 3)初始化一些参数:文件目录,文件名,编码方式等;(写操作主要与文件输出流相关) 151 152 4)主要通过以下方法生成xml文件:(所放参数的具体要求,读者可自行了解) 153 154 serializer.startDocument(); 155 serializer.startTag(); 156 serializer.text(); 157 serializer.endTag(); 158 serializer.endDocument();