生成xml文件格式數據,Android提供了Xml.newSerializer();,可以理解為Xml序列化;
序列化:把內存里面的數據(file,databases,xml 等等) 丟給某一個地方;
反序列化:把某個地方的數據(file,databases,xml 等等),拿到內存中;
既然是Android操作Xml,就用Android所提供的API,不用Java所提供的API,DOM解析,SAX解析了;
@Override public void onClick(View v) { // 模擬20條Person數據 List<Person> persons = new ArrayList<Person>(); for (int i=0; i<20; i++) { persons.add(new Person(i, "zhangsan" + i, i+10)); } Log.d(TAG, "persons.size():" + persons.size()); // persons.size():20 try { // 如何創建xml文件,然后把這20條數據,寫入xml文件里面去,一定是去看Android提供的API XmlSerializer serializer = Xml.newSerializer(); // 指定流目錄 OutputStream os = openFileOutput("persons.xml", Context.MODE_PRIVATE); // 設置指定目錄 serializer.setOutput(os, "UTF-8"); // 開始寫入Xml格式數據 // 開始文檔 // 參數一:指定編碼格式 參數二:是不是獨立的xml(這個xml與其他xml是否有關聯) 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())); // 設置name // 開始name標簽 serializer.startTag(null, "name"); // 寫入值 serializer.text(person.getName()); // 結束name標簽 serializer.endTag(null, "name"); // 設置age // 開始age標簽 serializer.startTag(null, "age"); // 寫入age值 serializer.text(String.valueOf(person.getAge())); // 結束age標簽 serializer.endTag(null, "age"); // 結束子標簽 serializer.endTag(null, "person"); } // 結束根標簽 serializer.endTag(null, "persons"); // 結束文檔 serializer.endDocument(); }catch (Exception e) { e.printStackTrace(); } }
執行后的結果:
打開看看: