android中xml解析

來源:互聯網
上載者:User

       同其他系統一樣,android的解析xml的方式也有三種:sax,dom,pull。本文主要記錄pull方式。

pull解析xml的方式是事件驅動,當pull到一種標籤的時候,它可以返回一個事件,我們根據事件來解析整個xml文檔。

  /**<br />*inStream代表需要解析的檔案的輸入資料流<br />*/<br />public static List<Person> getPersons(InputStream inStream){<br />List<Person> persons = null;<br />Person person = null;<br />XmlPullParser parser = Xml.newPullParser();<br />parser.setInput(inStream, "UTF-8");<br />int eventType = parser.getEventType();//產生第一個事件<br />while(eventType!=XmlPullParser.END_DOCUMENT){//只要不是文檔結束事件<br />switch (eventType) {<br />case XmlPullParser.START_DOCUMENT://其實就是<persons><br />persons = new ArrayList<Person>();<br />break;</p><p>case XmlPullParser.START_TAG://其實就是<person <name <age<br />String name = parser.getName();//擷取解析器當前指向的元素的名稱<br />if("person".equals(name)){<br />person = new Person();<br />person.setId(new Integer(parser.getAttributeValue(0)));<br />}<br />if(person!=null){<br />if("name".equals(name)){<br />person.setName(parser.nextText());//擷取解析器當前指向元素的下一個文本節點的值<br />}<br />if("age".equals(name)){<br />person.setAge(new Short(parser.nextText()));<br />}<br />}<br />break;</p><p>case XmlPullParser.END_TAG://其實就是</person> </age> </name><br />if("person".equals(parser.getName())){<br />persons.add(person);<br />person = null;<br />}<br />break;<br />}<br />eventType = parser.next();<br />}<br />return persons;<br />}

 

  <?xml version="1.0" encoding="UTF-8"?><br /><persons><br /><person id="23"><br /><name>liming</name><br /><age>30</age><br /></person><br /><person id="20"><br /><name>lixiangmei</name><br /><age>25</age><br /></person><br /></persons><br />

 

  附加使用pull寫xml:

public static void save(List<Person> persons, Writer writer){<br />XmlSerializer serializer = Xml.newSerializer();<br />serializer.setOutput(writer);<br />serializer.startDocument("UTF-8", true);</p><p>serializer.startTag(null, "persons");<br />for(Person person : persons){<br />serializer.startTag(null, "person");<br />serializer.attribute(null, "id", person.getId().toString());</p><p>serializer.startTag(null, "name");<br />serializer.text(person.getName());<br />serializer.endTag(null, "name");</p><p>serializer.startTag(null, "age");<br />serializer.text(person.getAge().toString());<br />serializer.endTag(null, "age");</p><p>serializer.endTag(null, "person");<br />}<br />serializer.endTag(null, "persons");<br />serializer.endDocument();<br />writer.flush();<br />writer.close();<br />}

相關文章

聯繫我們

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