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