基於Android XML解析與儲存的實現

來源:互聯網
上載者:User

解析XML檔案:
在Android平台上可以使用SAX、DOM和Android附帶的pull解析器解析XML檔案;
pull解析器提供了各種事件,使用parser.next()方法進入下一個元素並觸發相應事件,pull解析器產生的事件是一個數字,可以通過switch對感興趣的事件進行處理;通過paser.nextText()方法可以擷取下一個Text類型的節點的值;
http://xmlpull.org/xmlpull-website/impls.shtml;

讀取XML
XmlPullParser pullParser = Xml.newPullParser();
pullParser.setInput(xml, "UTF-8");//為破解器添加要解析的XML資料
int event = pullParser.getEventType();//開始讀取,擷取事件傳回值
pullParser.getName();//擷取節點名稱
pullParser.getAttributeValue(0);//擷取第一個屬性的值
pullParser.nextText();//擷取標籤之後的節點的內容
event = pullParser.next();//解析器遇到結束標籤不會自動向下解析,需要調用此方法進行繼續執行;

儲存檔案到XML

public static void save(List<Person> persons, OutputStream outStream)
throws Exception, IllegalStateException, IOException {
XmlSerializer serializer = Xml.newSerializer();//擷取XML寫入資訊的序列化對象
serializer.setOutput(outStream, "UTF-8");//設定要寫入的OutputStream
serializer.startDocument("UTF-8", true);//設定文檔標籤

serializer.startTag(null, "persons");//設定開始標籤,第一個參數為namespace
for (Person person : persons) {
serializer.startTag(null, "person");
serializer.attribute(null, "id", person.getId().toString());

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

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

serializer.endTag(null, "person");
}
serializer.endTag(null, "persons");
serializer.endDocument();
outStream.flush();
outStream.close();
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.