個人學習筆記之- pull解析XML

來源:互聯網
上載者:User

1.Pull簡介

Pull解析器是Android系統內建的的,Pull解析器與SAX解析器類似,他提供了類似的事件,如開始元素和介紹元素的事件,使用parser.next()可以進入下一個元素並觸發相應的事件,然後進行相應的處理,當元素開始解析時,調用perser.nextText()方法就可以擷取到下一個Text類型元素的值。

2.pull特點

一.簡單的結構,一個介面,一個另外,一個工廠組成了Pull解析器

二.簡單易用,Pull解析器只有一個重要的方法next(),他被用來檢索下一個事件,而他的事件也僅僅只有五個,START_DOCUMENT, START_TAG ,TEXT, END_TAG, END_DOCUMENT

三.最小的記憶體消耗,Pull解析器和SAX解析器一樣,對記憶體的暫用少,但是SAX解析稍微有點繁瑣,DOM很耗記憶體,所以Pull被推薦使用

3,樣本 Pull解析XML

先在src目錄先建立一個android.xml

<?xml version="1.0" encoding="UTF-8"?><persons>    <person id="23">        <name>xiaanming</name>        <age>23</age>    </person>    <person id="20">        <name>liudehua</name>        <age>28</age>    </person></persons>

建立一個PullXMLService

package com.example.pull_parser;import java.io.InputStream;import java.util.ArrayList;import java.util.List;import org.xmlpull.v1.XmlPullParser;import android.util.Log;import android.util.Xml;public class PullXMLService {public static List<Person> readXML() throws Exception{//擷取src目錄下面的android.xml檔案的輸入資料流InputStream is = PullXMLService.class.getClassLoader().getResourceAsStream("android.xml");//用來存放解析的Person對象List<Person> persons = null;//一個標記boolean flag = false;Person person = null;//執行個體化一個XmlPullParser對象XmlPullParser parser = Xml.newPullParser();//設定輸入資料流和編碼parser.setInput(is, "UTF-8");//觸發了第一個事件,根據XML的文法,也就是從他開始瞭解文檔int eventCode = parser.getEventType();//如果獲得的事件碼如果是文檔的結束,那麼解析結束while (eventCode != XmlPullParser.END_DOCUMENT) {switch(eventCode){case XmlPullParser.START_DOCUMENT:{//開始解析的時候我們一般做一些初始化的操作persons = new ArrayList<Person>();break;}case XmlPullParser.START_TAG:{//判斷當前的元素是否是需要檢索的元素if("person".equals(parser.getName())){flag = true;person = new Person();person.setId(Integer.valueOf(parser.getAttributeValue(0)));}if(flag){if("name".equals(parser.getName())){person.setName(parser.nextText());}else if("age".equals(parser.getName())){person.setAge(Integer.valueOf(parser.nextText()));}}break;}case XmlPullParser.END_TAG:{if("person".equals(parser.getName()) && person != null){flag = false;persons.add(person);Log.e("log", person.toString());person = null;}break;}}//這一步很重要,該方法返回一個事件碼,也是觸發下一個事件的方法eventCode = parser.next();}return persons;}}

好了,這樣子就解析完了android.xml 是不是很方便很簡單呢,比SAX和DOM要更容易理解,如果對SAX解析和對DOM解析不熟悉的朋友可以看我的那兩篇部落格

DOM解析XML

SAX解析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.