使用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目錄(保存應用的緩存文件)。