實現XMl檔案的序列化與解析,xml序列化解析

來源:互聯網
上載者:User

實現XMl檔案的序列化與解析,xml序列化解析

<persons><person id="1"><name>wang1</name><age>10></age></person><person id="2"><name>wang2</name><age>11></age></person><person id="3"><name>wang3</name><age>12></age></person><person id="4"><name>wang4</name><age>13></age></person></persons>



將上面的xml檔案隊形執行個體化與解析。


直接寫代碼:


public class TestCase extends AndroidTestCase {public void test() {//writeToLocal();List<Person> persons = parserXmlFromLocal();for (Person person : persons) {Log.i("testcase", person.toString());}}private void writeToLocal() {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);serializer.startTag(null, "persons");// <persons>for (Person person : personlist) {// 開始寫人serializer.startTag(null, "person");serializer.attribute(null, "id", String.valueOf(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();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}private List<Person> getPersonList() {List<Person> persons = new ArrayList<Person>();for (int i = 0; i < 20; i++) {persons.add(new Person(i, "wang" + i, 10 + i));}return persons;}private List<Person> parserXmlFromLocal (){try {File path = new File(Environment.getExternalStorageDirectory(),"persons.xml");FileInputStream fis = new FileInputStream(path);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:if("persons".equals(tagName)){personlist = new ArrayList<Person>();}else if ("person".equals(tagName)){person = new Person();id = parser.getAttributeValue(null,"id");person.setId(Integer.valueOf(id));}else if ("name".equals(tagName)){person.setName(parser.nextText());}else if ("age".equals(tagName)){person.setAge(Integer.valueOf(parser.nextText()));}break;case XmlPullParser.END_TAG:if ("person".equals(tagName)){personlist.add(person);}break;default:break;}eventType = parser.next();}return personlist;} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}return null;}}


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.