亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

在Android系統中解析XML文件的方法

2019-11-26 15:02:29
字體:
來源:轉載
供稿:網友

前言
    在學習Android的Framework層源碼時,Android大量的使用XmlPullParser來解析xml文件的源碼。因此,這里也順道介紹一下XmlPullParser的使用。

XML
    XML(eXtensible Markup Language)中文名為可擴展標記語言。標記指計算機所能理解的信息符號,通過此種標記,計算機之間可以處理包含各種信息的文章等。
用途
    XML設計用了傳送及攜帶數據信息,不用了表現或展示數據,HTML語言則用了表現數據,所以XML用途的焦點是它說明數據是什么,以及攜帶數據信息。

  •     豐富文件――自定文件描述并使其更豐富
  •     元數據――描述其它文件或網絡資訊
  •     配置文檔――描述軟件設置的參數

結構
    每個XML文檔都由XML序言開始,在前面的代碼中第一行就是XML序言,<?xml version="1.0"?>。這一行代碼會告訴解析器或瀏覽器這個文件應該按照XML規則進行解析。但是,根元素的名稱是由文檔類型定義或XML綱要定義的。

XmlPullParser
    PULL解析xml是基于事件驅動的方式解析XML文件,pull開始解析時,我們可以先通過getEventType()方法獲取當前解析事件類型,并且通過next()方法獲取下一個解析事件類型。PULL解析器提供了START_DOCUMENT(開始文檔)、END_DOCUMENT(結束文檔)、START_TAG(開始標簽)、END_TAG(結束標簽)四種事件解析類型。當處于某個元素時,可以調用getAttributeValue()方法獲取屬性的值,也可以通過nextText()方法獲取本節點的文本值。下面通過一個例子來進行解析。
xml示例文件
    需要解析的xml示例文件代碼如下:

  <?xml version="1.0" encoding="UTF-8"?>   <colleagues>     <colleague id="1">       <name>耗子</name>       <age>24</age>       <sex>boy</sex>     </colleague>     <colleague id="2">       <name>璐璐</name>       <age>28</age>       <sex>girl</sex>     </colleague>     <colleague id="3">       <name>陳善</name>       <age>26</age>       <sex>boy</sex>     </colleague>   </colleagues> 

XmlPullParser解析器

  package com.example.shakedemo;      import java.io.File;   import java.io.FileNotFoundException;   import java.io.FileReader;   import java.io.IOException;   import java.util.ArrayList;   import java.util.List;   import org.xmlpull.v1.XmlPullParser;   import org.xmlpull.v1.XmlPullParserException;   import org.xmlpull.v1.XmlPullParserFactory;   import android.R.xml;   import android.util.Log;   import android.util.Xml;      public class XmlPullParserHelper {        public static List<Colleague> getColleagues(String xmlFilePath) {       List<Colleague> colleagues = new ArrayList<Colleague>();       FileReader xmlReader = null;       try {         xmlReader = new FileReader(new File(xmlFilePath));       } catch (FileNotFoundException e) {         Log.e("wzy", "Couldn't find xml file " + xmlFilePath);         return colleagues;       }          try {            // 方式1: 使用 Android 提供的android.util.Xml 類獲取 parser 對象         XmlPullParser parser = Xml.newPullParser();            // 方式2: 使用工廠類 XmlPullParserFactory         // XmlPullParserFactory pullFactory =         // XmlPullParserFactory.newInstance();         // XmlPullParser parser = pullFactory.newPullParser();            // 設置文件輸入流         parser.setInput(xmlReader);            // 得到當前事件類型         int eventType = parser.getEventType();            Colleague colleague = null;            while (eventType != XmlPullParser.END_DOCUMENT) {           switch (eventType) {           case XmlPullParser.START_DOCUMENT:             break;           case XmlPullParser.START_TAG:             /**              * 通過getName判斷讀到哪個標簽, 然后通過nextText獲取文本節點值,              * 或者通過getAttributeValue(i)獲取屬性節點值              */             String name = parser.getName();             if ("colleague".equals(name)) {               colleague = new Colleague();               colleague.setId(Integer.parseInt(parser.getAttributeValue(null, "id")));             } else if ("name".equals(name)) {               if (colleague != null) {                 colleague.setName(parser.nextText());               }             } else if ("age".equals(name)) {               if (colleague != null) {                 colleague.setAge(Integer.parseInt(parser.nextText()));               }             } else if ("sex".equals(name)) {               if (colleague != null) {                 colleague.setSex(parser.nextText());               }             }                break;           case XmlPullParser.END_TAG:             if ("colleague".equals(parser.getName()) && colleague != null) {               colleagues.add(colleague);               colleague = null;             }             break;           }              eventType = parser.next();         }            xmlReader.close();       } catch (XmlPullParserException e) {         // Do nothing       } catch (IOException e) {         // Do nothing       }          return colleagues;     }   } 

    其中,colleague類的定義比較簡單,代碼如下:

  

 package com.example.shakedemo;      public class Colleague {     private int id;     private int age;     private String name;     private String sex;        public int getId() {       return id;     }        public void setId(int id) {       this.id = id;     }        public int getAge() {       return age;     }        public void setAge(int age) {       this.age = age;     }        public String getName() {       return name;     }        public void setName(String name) {       this.name = name;     }        public String getSex() {       return sex;     }        public void setSex(String sex) {       this.sex = sex;     }        @Override     public String toString() {       return "ID is " + id + ", Name is " + name + ", Sex is " + sex;     }      } 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品一区二区女厕厕| 欧美孕妇毛茸茸xxxx| 欧美理论在线观看| 亚洲视频在线免费看| 精品久久久久久久久中文字幕| 91国内在线视频| 91av在线播放视频| 久久久久久久久久久免费精品| 久久精品久久久久电影| 51ⅴ精品国产91久久久久久| 久久久中精品2020中文| 国产精品大片wwwwww| 亚洲第一精品夜夜躁人人躁| 国内自拍欧美激情| 91av在线国产| 日本精品一区二区三区在线播放视频| 欧美日韩国产综合视频在线观看中文| 精品日本高清在线播放| 精品成人在线视频| 亚洲国产小视频在线观看| 在线亚洲欧美视频| 欧美午夜片在线免费观看| 色樱桃影院亚洲精品影院| 456亚洲影院| 91黑丝高跟在线| 成人欧美一区二区三区在线| 色哟哟网站入口亚洲精品| 国产精品96久久久久久又黄又硬| 欧美一级视频在线观看| 久久精品国产一区| 国产精品入口尤物| 欧美一级电影久久| 亚洲香蕉伊综合在人在线视看| 亚洲欧美成人一区二区在线电影| 日韩在线资源网| 欧美极品第一页| 久久精品久久精品亚洲人| 日韩一级黄色av| 97欧美精品一区二区三区| 色综合久久中文字幕综合网小说| 亚洲激情视频在线| 国产精品欧美在线| 欧美激情亚洲视频| 日韩av影视在线| 国产日韩中文字幕| 日本欧美一级片| 亚洲人成在线一二| 欧美xxxx做受欧美| 中文国产亚洲喷潮| 欧美精品一区二区三区国产精品| 成人国产精品久久久久久亚洲| 成人免费午夜电影| 成人午夜两性视频| 国产精品久久久久久久久久久久久| 亚洲xxxx妇黄裸体| 欧美日韩国产在线看| 美女福利视频一区| 亚洲一区999| 亚洲精选在线观看| 成人午夜黄色影院| 国产99久久精品一区二区永久免费| 国产福利精品av综合导导航| 45www国产精品网站| 精品久久久久久国产| 亚洲精品在线观看www| 久久久亚洲福利精品午夜| 欧美一乱一性一交一视频| 国产视频观看一区| 国产精品99久久久久久久久久久久| 在线观看中文字幕亚洲| 亚洲精品美女久久久| 欧美精品情趣视频| 91av视频在线播放| 亚洲激情 国产| 日韩高清人体午夜| 日韩av观看网址| 国产一区红桃视频| 欧美日韩综合视频网址| 国产精品激情av在线播放| 欧美极品美女电影一区| 亚洲成人激情图| 国产伊人精品在线| 日韩av网站大全| 在线精品国产欧美| 欧美激情一级欧美精品| 亚洲一区亚洲二区亚洲三区| 亚洲成年人在线播放| 自拍偷拍免费精品| 欧美精品久久久久久久免费观看| 欧美在线播放视频| 国产精品aaa| 98精品国产自产在线观看| 国产精品一区二区在线| 久久精品视频中文字幕| 国产精品久久久久久久美男| 午夜精品一区二区三区视频免费看| 91亚洲精品在线| 欧美日韩美女在线| 欧美大全免费观看电视剧大泉洋| 国产精品一区=区| 欧美在线视频观看| 欧美刺激性大交免费视频| 国产福利成人在线| 亚洲欧美一区二区精品久久久| 一区二区三欧美| 亚洲国产日韩欧美综合久久| 7777精品视频| 国产视频丨精品|在线观看| 91亚洲精品一区二区| 国产久一一精品| 精品福利在线观看| 欧美噜噜久久久xxx| 国产精品福利在线观看网址| 日韩最新免费不卡| 亚洲欧洲午夜一线一品| 日韩欧美成人网| 欧美国产精品人人做人人爱| 精品小视频在线| 欧美国产在线电影| 欧美高清视频在线观看| 精品夜色国产国偷在线| 精品中文字幕在线| 久久艳片www.17c.com| 国产精品久久99久久| 亚洲午夜未满十八勿入免费观看全集| 神马久久桃色视频| 亚洲三级黄色在线观看| 成人av.网址在线网站| 亚洲女人被黑人巨大进入| 九九热这里只有精品免费看| 国产香蕉一区二区三区在线视频| 亚洲最大av网| 亚洲自拍欧美色图| 欧美激情一级精品国产| 性亚洲最疯狂xxxx高清| 亚洲欧洲日产国码av系列天堂| 国产精品久久综合av爱欲tv| 国产精品精品一区二区三区午夜版| 国产日韩在线看片| 亚洲国产精品系列| 国产精品久久91| 欧美日韩在线免费观看| 国产欧美韩国高清| 一区二区三区国产在线观看| 亚洲黄色在线看| 亚洲xxxxx| 久久久久北条麻妃免费看| 欧美日韩成人精品| 国产精品自产拍在线观| 精品成人久久av| 日韩视频免费观看| 国产精品久久久久7777婷婷| 日韩av手机在线| 国产亚洲精品成人av久久ww| 成人免费视频a| 欧美丰满少妇xxxxx做受| 揄拍成人国产精品视频| 国模精品视频一区二区三区| 韩曰欧美视频免费观看| 俺也去精品视频在线观看| 久久精品国产久精国产一老狼| 国产视频欧美视频| zzjj国产精品一区二区| 精品无人区乱码1区2区3区在线|