日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android之XML序列化和解析

發布時間:2024/7/23 Android 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android之XML序列化和解析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

XML文件是一種常用的文件格式,可以用來存儲與傳遞數據 ,本文是XML文件序列化與解析的一個簡單示例

寫文件到本地,并用XML格式存儲

/*** 寫xml文件到本地*/private void writeXmlToLocal() {List<Person> personList = getPersonList();// 獲得序列化對象XmlSerializer serializer = Xml.newSerializer();try {File path = new File(Environment.getExternalStorageDirectory(), "persons.xml");FileOutputStream fos = new FileOutputStream(path);// 指定序列化對象輸出的位置和編碼serializer.setOutput(fos, "utf-8");serializer.startDocument("utf-8", true); // 寫開始 <?xml version='1.0' encoding='utf-8' standalone='yes' ?>serializer.startTag(null, "persons"); // <persons>for (Person person : personList) {// 開始寫人serializer.startTag(null, "person"); // <person>serializer.attribute(null, "id", String.valueOf(person.getId()));// 寫名字serializer.startTag(null, "name"); // <name>serializer.text(person.getName());serializer.endTag(null, "name"); // </name>// 寫年齡serializer.startTag(null, "age"); // <age>serializer.text(String.valueOf(person.getAge()));serializer.endTag(null, "age"); // </age>serializer.endTag(null, "person"); // </person>}serializer.endTag(null, "persons"); // </persons>serializer.endDocument(); // 結束} catch (Exception e) {e.printStackTrace();}}private List<Person> getPersonList() {List<Person> personList = new ArrayList<Person>();for (int i = 0; i < 30; i++) {personList.add(new Person(i, "wang" + i, 18 + i));}return personList;}

XML解析實現

private List<Person> parserXmlFromLocal() {try {File path = new File(Environment.getExternalStorageDirectory(), "persons.xml");FileInputStream fis = new FileInputStream(path);// 獲得pull解析器對象XmlPullParser parser = Xml.newPullParser();// 指定解析的文件和編碼格式parser.setInput(fis, "utf-8");int eventType = parser.getEventType(); // 獲得事件類型List<Person> personList = null;Person person = null;String id;while(eventType != XmlPullParser.END_DOCUMENT) {String tagName = parser.getName(); // 獲得當前節點的名稱switch (eventType) {case XmlPullParser.START_TAG: // 當前等于開始節點 <person>if("persons".equals(tagName)) { // <persons>personList = new ArrayList<Person>();} else if("person".equals(tagName)) { // <person id="1">person = new Person();id = parser.getAttributeValue(null, "id");person.setId(Integer.valueOf(id));} else if("name".equals(tagName)) { // <name>person.setName(parser.nextText());} else if("age".equals(tagName)) { // <age>person.setAge(Integer.parseInt(parser.nextText()));}break;case XmlPullParser.END_TAG: // </persons>if("person".equals(tagName)) {// 需要把上面設置好值的person對象添加到集合中personList.add(person);}break;default:break;}eventType = parser.next(); // 獲得下一個事件類型}return personList;} catch (Exception e) {e.printStackTrace();}return null;}

測試結果

public class TestCase extends AndroidTestCase {public void test() { // writeXmlToLocal();List<Person> personList = parserXmlFromLocal();for (Person person : personList) {Log.i("TestCase", person.toString());}}

完成

總結

以上是生活随笔為你收集整理的Android之XML序列化和解析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。