android 學習記錄 xml 序列化與解析

序列化xml:

Person 類:

public class Person {

    private String name;
    private int id;
    private int age;

    public Person(String name, int id, int age) {
        this.name = name;
        this.id = id;
        this.age = age;
    }

    public Person() {
    }

    public String getName() {
        return name;
    }

    public int getId() {
        return id;
    }

    public int getAge() {
        return age;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setId(int id) {
        this.id = id;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", id=" + id +
                ", age=" + age +
                '}';
    }
}

序列化xml:

 XmlSerializer serializer = Xml.newSerializer();
        Log.i("test", "" + Environment.getExternalStorageDirectory());
        File file = new File("/mnt/sdcard", "xmldemo.xml");
        try {
            FileOutputStream fos = new FileOutputStream(file);

            serializer.setOutput(fos, "utf-8");
            serializer.startDocument("utf-8", true);
            serializer.startTag(null, "Person");


            for (int i = 0; i < 10; i++) {
                Person person = new Person("王小二", i, 18 + i);
                serializer.startTag(null, "person");

                serializer.attribute(null, "id", person.getId() + "");

                serializer.startTag(null, "name");
                serializer.text(person.getName());
                serializer.endTag(null, "name");

                serializer.startTag(null, "age");
                serializer.text(person.getAge()+"");
                serializer.endTag(null, "age");

                serializer.endTag(null, "person");
            }


            serializer.endTag(null, "Person");

            serializer.endDocument();
            Log.i("test", "寫入成功");
        } catch (Exception e) {
            e.printStackTrace();
            Log.i("test", "寫入失敗");
        }

pull解析:這裏犯了一個錯誤,解析出來的數據,寫到person 對象中(當讀到person 開始節點時,應爲person的引用賦值,當讀到person 結束節點時,應把person 引用賦值爲null,並把這個person對象add到list集合中)

List<Person> personlist = new ArrayList<Person>();

        XmlPullParser parser = Xml.newPullParser();

        File file = new File("/mnt/sdcard", "xmldemo.xml");
        try {

            FileInputStream fis = new FileInputStream(file);

            parser.setInput(fis, "utf-8");

            int type = parser.getEventType();

            Person person = null;
            while (type != XmlPullParser.END_DOCUMENT) {

                switch (type) {

                    case XmlPullParser.START_TAG:

                        if ("person".equals(parser.getName())) {

                            person = new Person();
                            String id = parser.getAttributeValue(0);
                            person.setId(Integer.valueOf(id));
                        } else if ("name".equals(parser.getName())) {
                            String name = parser.nextText();

                            person.setName(name);
                        } else if ("age".equals(parser.getName())) {
                            String age = parser.nextText();
                            person.setAge(Integer.valueOf(age));
                        }
                        break;
                    case XmlPullParser.END_TAG:
                        if ("person".equals(parser.getName())) {

                            personlist.add(person);
                            person = null;
                        }
                        break;
                }

                type = parser.next();
            }

            for (Person p : personlist) {
                Log.i("test", p.toString());
            }

        } catch (Exception e) {
            e.printStackTrace();
            Log.i("test", "解析失敗");
        }
    }

使用SharedPreferences類 寫xml文件,此文件會保存在/data/data/包名/shared_prefs/下

SharedPreferences sp = this.getSharedPreferences("xmldemo.xml", MODE_PRIVATE);
SharedPreferences.Editor edit = sp.edit();
edit.putString("name", "王小二");
edit.commit();

讀取此xml文件:

SharedPreferences sp = getSharedPreferences("xmldemo.xml", MODE_PRIVATE);
String readstr = sp.getString("name", null);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章