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

 

posted @ 2014-04-14 15:27  Allen-Peng Yu  阅读(511)  评论(0编辑  收藏  举报