xml序列化到本地以及使用Pull解析xml

来源:互联网 发布:淘宝保证金是什么 编辑:程序博客网 时间:2024/05/18 02:42
package com.tu.test;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.util.ArrayList;import java.util.List;import org.xmlpull.v1.XmlPullParser;import org.xmlpull.v1.XmlSerializer;import android.os.Environment;import android.test.AndroidTestCase;import android.util.Xml;public class TuTest extends AndroidTestCase {    public void test() {//      List<Person> persons = this.getPersonList();//      this.writeToLocal(persons);//写到xml文件        System.out.println("-------->开始");//      List<Person> persons;        List<Person>  persons = parseXmlFromLocal(new File(Environment.getExternalStorageDirectory(),"persons.xml"));        System.out.println("persons的size--->");        for(Person person : persons){            System.out.println(person.toString());;        }}    /**     * 自己创建一个Person集合,用于测试写到本地     * @return     */    public List<Person> getPersonList(){        List<Person> persons = new ArrayList<Person>();        for(int i=0; i<20; i++){            Person person = new Person();            person.setId(i);            person.setAge(18+i);            person.setName("baby"+i);            persons.add(person);        }        return persons;    }    /**     * 把Person集合写到本地的xml文件中     * @param persons     * @throws IOException      * @throws IllegalStateException      * @throws IllegalArgumentException      */    public void writeToLocal(List<Person> persons) throws IllegalArgumentException, IllegalStateException, IOException {        BufferedOutputStream bos =                 new BufferedOutputStream(new FileOutputStream(new File(Environment.getExternalStorageDirectory(),"persons.xml")));        System.out.println(Environment.getExternalStorageDirectory());//      StringBuilder sb = new StringBuilder();        XmlSerializer serializer = Xml.newSerializer();        serializer.setOutput(bos, "UTF-8");        serializer.startDocument("UTF-8", true);        serializer.startTag(null, "persons");        for(Person person : persons){            serializer.startTag(null, "person");            serializer.attribute(null, "id",String.valueOf(person.getId()) );            serializer.startTag(null, "name");            serializer.text(person.getName());            serializer.endTag(null, "name");            serializer.startTag(null, "age");            serializer.text(String.valueOf(person.getAge()));            serializer.endTag(null, "age");            serializer.endTag(null, "person");        }        serializer.endTag(null, "persons");        serializer.endDocument();        bos.close();    }    public List<Person> parseXmlFromLocal(File xmlFile){        try {            BufferedInputStream bis = new BufferedInputStream(new FileInputStream(xmlFile));            XmlPullParser pullParser = Xml.newPullParser();            pullParser.setInput(bis, "utf-8");            int eventType  = pullParser.getEventType();            List<Person> persons = null;            Person person = null;            System.out.println("1111111");            while(eventType != XmlPullParser.END_DOCUMENT){                switch (eventType) {                case XmlPullParser.START_TAG:                    if(pullParser.getName().equals("persons")){                        persons = new ArrayList<Person>();                    }else if(pullParser.getName().equals("person")){                        person = new Person();                        person.setId(Integer.valueOf(pullParser.getAttributeValue(null, "id")));                    }else if(pullParser.getName().equals("name")){                        person.setName(pullParser.nextText());                    }else if(pullParser.getName().equals("age")){                        person.setAge(Integer.valueOf(pullParser.nextText()));                    }                    break;                case XmlPullParser.END_TAG:                    if(pullParser.getName().equals("person")){                        System.out.println("33333333333");                        persons.add(person);                    }                    break;                default:                    break;                }                pullParser.next();            }            return persons;        } catch (Exception e) {            System.out.println("发生错误");        }//      bis.close();        return null;    }}class Person{    private int id;    private String name;    private int age;    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    @Override    public String toString() {        return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";    }}
0 0
原创粉丝点击