使用Pull生成XML文件

使用Pull生成XML文件
之前講了如何使用Pull解析XML文件點擊打開鏈接,這裏我們在通過一個列子完成使用Pull解析器生成XML文件。
1.要完成的XML例子
2.在之前的業務類中編寫一個保存的方法save();通過List<Person>集合來保存;
首先我們要獲得一個XML的序列化器(Xml.newSerializer());
傳入一個輸出流對象(setOutput(out, "UTF-8"));
接下來我們就要採用面向對象的方式生成和這個XMl文件格式相同的XML內容,這個順序和我們手寫HTML的順序是一樣的。
public static void save(List<Person> persons, OutputStream out) throws Exception {
    XmlSerializer serializer = Xml.newSerializer();
    serializer.setOutput(out, "UTF-8");
    //第二個參數是指XML文件能單獨存在,而不依賴其他文件
    serializer.startDocument("UTF-8", true);
    //第一個參數是指命名空間
    serializer.startTag(null, "persons");
    for(Person person : persons) {
        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, "persons");
    serializer.endDocument();
    out.flush();
    out.close();
}
生成完XML數據之後,我們首先要把數據刷出去out.flush(),在把他關掉out.close();因爲用戶傳入的可能是緩衝輸入流。
3.回到測試類,編寫測試方法,測試保存。

public void testSave() throws Exception {
    List<Person> persons = new ArrayList<Person>();
    persons.add(new Person(1, "zhangsan", 16));
    persons.add(new Person(2, "lisi", 22));
    persons.add(new Person(3, "wangwu", 36));
    //路徑當前應用所在包的Files文件夾
    File xmlFile = new File(getContext().getFilesDir(), "android.xml");
    FileOutputStream out = new FileOutputStream(xmlFile);
    PersonService.save(persons, out);
}

4.執行測試方法,打開文件資源管理器,在當前應用所在包底下的files文件中導出android.xml,複製到應用程序中,打開文件,對其進行源代碼的格式化。

附:介紹兩個API

上下文對象提供的getFilesDir()方法用於獲取/data/data/<package name>/files目錄

getCacheDir()方法用與獲取/data/data/<<package name>/cache目錄(保存應用的緩存文件)。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章