XML读取保存
1.读取XML文件
参数xml是建含xml数据的输入流,List<Person> persons用于存储xml流中的数据。
XmlPullParser类的几个方法:next(),nextToken() ,getEventType().
1 /**
2 * 获取xml数据
3 * */
4 public List<Person> getPersons(InputStream xml) throws Exception{
5 List<Person>persons=null;
6 Person person=null;
7 XmlPullParser pullParser=Xml.newPullParser();
8 //为pull解析器设置要解析的xml数据,第一个参数为输入流,第二个为该数据的编码格式
9 pullParser.setInput(xml, "UTF-8");
10 int envnt =pullParser.getEventType();
11 while (envnt!=XmlPullParser.END_DOCUMENT) {
12 switch (envnt) {
13 case XmlPullParser.START_DOCUMENT: //开始文件时创建实例存储数据
14 persons=new ArrayList<Person>();
15 break;
16 case XmlPullParser.START_TAG : //标签开始,读取数据部分
17 if("person".equals(pullParser.getName())){
18 int id=new Integer(pullParser.getAttributeValue(0));
19 person=new Person();
20 person.setId(id);
21 }
22 if("name".equals(pullParser.getName())){
23 String name=pullParser.nextText();
24 person.setName(name);
25 }
26 if("age".equals(pullParser.getName())){
27 Integer age=new Integer(pullParser.nextText());
28 person.setAge(age);
29 }
30 pullParser.next(); //跳到到下一个标签
30 break;
31 case XmlPullParser.END_TAG: //标签结束部分
32 if("person".equals(pullParser.getName())){
33 //建解析出来的数据保存在List中,后置空person
34 persons.add(person);
35 person=null;
36 }
37 break;
38 }
39 }
40 return persons;
41 }
2:将数据写入xml文件
out为需要存储的xml数据类型的数据,可以存储进xml的数据类型可以是List<Person>中的。也可以是其他类型的数据。
1 /**
2 * 保存xml数据
3 * */
4 public void sava(List<Person> persons ,OutputStream out)throws Exception{
5 //得到序列化器
6 XmlSerializer serializer=Xml.newSerializer();
7 //见文件写入序列化器当中
8 serializer.setOutput(out, "UTF-8");
9 //创建xml头文件
10 serializer.startDocument("UTF-8", true);//true 表示该文件能不能单独存在
11 //创建标签头
12 serializer.startTag(null, "persons");//参数以为该文件的命名空间,参数二为标签名
13 //创建标签尾
14 for(Person person:persons){ //循环读取person标签的数据
15 serializer.startTag(null, "person");
16 serializer.attribute(null, "id", person.getId().toString());
17
18 serializer.startTag(null, "name");
19 serializer.text(person.getName().toString());
20 serializer.endTag(null, "name");
21
22 serializer.startTag(null, "age");
23 serializer.text(person.getAge().toString());
24 serializer.endTag(null, "age");
25 //创建结束文档
26 serializer.endDocument();
27 out.flush();
28 out.close();
29 }
30 }