Android進階之XML檔案解析

來源:互聯網
上載者:User

標籤:

xml序列化是把記憶體資料寫入硬碟或SD卡。

XML檔案解析的方式:

1、dom解析,產生一個樹狀結構,並全部加入記憶體,在記憶體修改樹狀結構的節點即可。但是消耗記憶體大。

2、sax解析 基於事件的解析方式。速度快,效率高,但是不能倒退。

3、pull解析 基於事件的解析


pull解析方式:

第一步,初始化解析器,設定要解析的資料流。(此刻指向文檔的開始部分)

第二步,得到事件。

第三步,總的節點集合。

第四步,單個節點。


public class PullXMLTools {public PullXMLTools() {// TODO Auto-generated constructor stub}/** * @param inputStream *            從伺服器擷取xml檔案,以流的形式返回 * @param encode *            編碼格式 * @return * @throws Exception */public static List<Person> parseXML(InputStream inputStream, String encode)throws Exception {List<Person> list = null;Person person = null;// 裝載解析每一個person節點的內容// 建立一個xml解析的工廠XmlPullParserFactory factory = XmlPullParserFactory.newInstance();// 獲得xml解析類的引用XmlPullParser parser = factory.newPullParser();parser.setInput(inputStream, encode);// 獲得事件的類型int eventType = parser.getEventType();while (eventType != XmlPullParser.END_DOCUMENT) {switch (eventType) {case XmlPullParser.START_DOCUMENT:list = new ArrayList<Person>();break;case XmlPullParser.START_TAG:if ("person".equals(parser.getName())) {person = new Person();// 取出屬性值int id = Integer.parseInt(parser.getAttributeValue(0));person.setId(id);} else if ("name".equals(parser.getName())) {String name = parser.nextText();// 擷取該節點的內容person.setName(name);} else if ("age".equals(parser.getName())) {int age = Integer.parseInt(parser.nextText());person.setAge(age);}break;case XmlPullParser.END_TAG:if ("person".equals(parser.getName())) {list.add(person);person = null;}break;}eventType = parser.next();}return list;}}

xml檔案是persons person


利用Java類載入可以載入工程中的xml檔案:






Android進階之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.