android網路編程之pull解析xml

來源:互聯網
上載者:User

標籤:android   style   blog   ar   使用   sp   java   strong   on   

android網路編程之pull解析xml

  除了前面介紹過的SAX以及DOM方法,還可以通過Pull對xml文檔進行一個解析。Pull解析器的解析方式與SAX非常相似。它提供了類似的事件,使用parser.next()可以進入下一元素並觸發相應事件,事件將作為數值代碼被發送,因此可以使用一個switch對感興趣的事件進行選擇,然後進行相應的處理,調用parser.nextText()方法可以擷取下一個Text類型元素的值。

  pull解析器特點:

    *結構簡單:一個介面、一個例外、一個工廠就組成了Pull解析器

    *簡單易用:只有5個事件:

      1.START_DOCUMENT--->開始解析事件

      2.START_TAG--->開始元素

      3.END_TAG--->結束元素

      4.TEXT--->解析文本

      5.END_DOCUMENT--->結束解析事件

  直接看代碼:
public class PullPersonParse {                  /** * 使用pull技術解析xml * @param inStream * @return * @throws Throwable */public static ArrayList<Person> pullParsePersons(InputStream inStream) throws Throwable{ArrayList<Person> persons = null;Person person = null;XmlPullParser parser = Xml.newPullParser();parser.setInput(inStream, "UTF-8");int eventType = parser.getEventType();//產生第一個事件while(eventType!=XmlPullParser.END_DOCUMENT){//只要不是文檔結束解析事件switch (eventType) {case XmlPullParser.START_DOCUMENT://開始解析事件persons = new ArrayList<Person>();break;case XmlPullParser.START_TAG://開始元素String name = parser.getName();//擷取解析器當前指向的元素的名稱if("person".equals(name)){person = new Person();person.setId(new Integer(parser.getAttributeValue(0)));}if(person!=null){if("name".equals(name)){person.setName(parser.nextText());//擷取解析器當前指向元素的下一個文本節點的值}if("age".equals(name)){person.setAge(new Short(parser.nextText()));}}break;case XmlPullParser.END_TAG://結束元素if("person".equals(parser.getName())){persons.add(person);person = null;}break;}eventType = parser.next();}return persons;}}

 


   從記憶體佔用率和執行效率方面考慮,應該盡量優先考慮sax和pull方式進行xml檔案的解析。

 

      

android網路編程之pull解析xml

聯繫我們

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