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

首頁 > 系統(tǒng) > Android > 正文

Android中數(shù)據(jù)解析的五種方式

2019-10-21 21:25:10
字體:
供稿:網(wǎng)友

這里有一份XML文件,接下來我們用不同的解析方式來解析這份文件

<?xml version="1.0" encoding="UTF-8"?><Movies>  <Movie id="1">    <name>憤怒的小鳥</name>    <type>Animation</type>    <year>2016</year>  </Movie>  <Movie id="2">    <name>葉問3</name>    <type>Action</type>    <language>English</language>  </Movie></Movies>

1.DOM解析

//1.創(chuàng)建一個DocumentBuilderFactory對象    DocumentBuilderFactory dBuilderFactory=DocumentBuilderFactory.newInstance();    try {      //2.創(chuàng)建一個DocumentBuilder對象      DocumentBuilder dBuilder=dBuilderFactory.newDocumentBuilder();      //3.獲取Document對象      Document document=dBuilder.parse("Movie.xml");      System.out.println("解析開始:--------------------------");      //獲取Movie元素結(jié)點集合      NodeList movies=document.getElementsByTagName("Movie");      System.out.println("共有"+movies.getLength()+"部電影");      //遍歷Movie元素結(jié)點集合      for(int i=0;i<movies.getLength();i++){        System.out.println("=====================");        System.out.println("正在解析"+(i+1)+"部電影!");        Node movie=movies.item(i);        //獲取元素結(jié)點的屬性集合        NamedNodeMap attrs=movie.getAttributes();        for(int j=0;j<attrs.getLength();j++){          Node attr=attrs.item(j);          System.out.print("屬性名為:"+attr.getNodeName()+"    ");          System.out.println("屬性值為:"+attr.getNodeValue());        }        //獲取movie元素子節(jié)點集合        NodeList childNodes=movie.getChildNodes();        for(int k=0;k<childNodes.getLength();k++){          Node child=childNodes.item(k);          if (child.getNodeType()==Document.ELEMENT_NODE) {            System.out.println("節(jié)點名:"+child.getNodeName()+"    ");            //System.out.println("節(jié)點值:"+child.getNodeValue());            System.out.println("節(jié)點值:"+child.getFirstChild().getNodeValue());          }        }        System.out.println("第"+(i+1)+"部電影解析結(jié)束");      }      System.out.println("解析結(jié)束--------------------------------");    } catch (Exception e) {      e.printStackTrace();    }

2.SAX解析

//1.創(chuàng)建SAXFactory對象    SAXParserFactory sParserFactory=SAXParserFactory .newInstance();    //2.拿到一個SAXParser解析對象    try {      SAXParser saxParser=sParserFactory.newSAXParser();      saxParser.parse("Movie.xml",new MyHandler() );    } catch (Exception e) {      e.printStackTrace();    }

接下來需要寫一個類去繼承DefaultHandler,然后一般要重寫里面的五個方法: 

1)startDocument(),該方法一執(zhí)行表示解析開始,可以在里面去初始化對象集合

@Override  public void startDocument() throws SAXException {    System.out.println("開始解析----------------------------");    movieList=new ArrayList<>();  }

2)startEnement(),該方法一執(zhí)行表示解析到了開始元素,亦即xml文件里面的Movie標簽

@Override  public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {    //    if ("Movie".equals(qName)) {      movie=new Movie();      count++;      System.out.println("正在解析第"+count+"部電影!");      for (int i = 0; i < attributes.getLength(); i++) {        //拿到屬性名和屬性值        System.out.print("屬性名:"+attributes.getQName(i)+"    ");        System.out.println("屬性值:"+attributes.getValue(i));        if (attributes.getQName(i).equals("id")) {          movie.setMovieId(attributes.getValue(i));        }      }    }  }

3)characters(),在該方法里面去讀取元素的值

@Override  public void characters(char[] ch, int start, int length) throws SAXException {    value=new String(ch,start,length);    if (!value.trim().equals("")) {      System.out.println("節(jié)點值:"+value);    }  }

4)endElement(),表示解析到了一個元素的結(jié)束標簽,在該方法里面可以去 構(gòu)造對象,最后并且添加到集合里去

@Override  public void endElement(String uri, String localName, String qName) throws SAXException {    if (qName.equals("year")) {      movie.setMovieYear(value);    }    if (qName.equals("type")) {      movie.setMovieType(value);    }    if (qName.equals("language")) {      movie.setMovieLanguage(value);    }    if (qName.equals("name")) {      movie.setMovieName(value);    }    //解析完一個元素時回調(diào)    if ("Movie".equals(qName)) {      movieList.add(movie);      movie=null;      System.out.println("第"+count+"部電影解析結(jié)束!");    }  }

5)endDocument(),當執(zhí)行到該方法也就表示文件已經(jīng)解析完畢了

@Override  public void endDocument() throws SAXException {    System.out.println("解析結(jié)束----------------------------");    System.out.println("解析結(jié)果集如下:");    for(int i=0;i<movieList.size();i++){      System.out.println(movieList.get(i).toString());      System.out.println("----------------------------------");    }  }

3.PULL解析

pull解析與其它方式不同的是,它需要將xml文件存放在資源文件res下面的xml文件夾下,解析的過程如下: 

1)首先拿到一個Pull資源解析器,有時如果通過網(wǎng)絡(luò)上下載xml文件的話,則需要去構(gòu)造一個Pull解析器,再將流設(shè)置給pull解析器, 接下來就是一樣的,一個標簽一個標簽的去解析

//拿到一個XMLResourceParser    //XmlPullParser parser=Xml.newPullParser();    //parser.setInput(in);    XmlResourceParser xmlResourceParser=getResources().getXml(R.xml.movie);    //拿到第一個事件類型,也就是最外層的標簽    try {      int type=xmlResourceParser.getEventType();      while(type!=XmlResourceParser.END_DOCUMENT){        if (type==XmlResourceParser.START_DOCUMENT) {          System.out.println("開始解析");          movieList=new ArrayList<>();        }        if (type==XmlResourceParser.START_TAG) {          if ("Movie".equals(xmlResourceParser.getName())) {            movie=new Movie();            String id=xmlResourceParser.getAttributeValue(null, "id");            System.out.println("id:"+id);            movie.setMovieId(id);          }          if ("name".equals(xmlResourceParser.getName())) {            //System.out.println("name:"+xmlResourceParser.nextText()+"===========");            movie.setMovieName(xmlResourceParser.nextText());          }else if ("type".equals(xmlResourceParser.getName())) {            movie.setMovieType(xmlResourceParser.nextText());          }else if ("year".equals(xmlResourceParser.getName())) {            movie.setMovieYear(xmlResourceParser.nextText());          }else if ("language".equals(xmlResourceParser.getName())) {            movie.setMovieLanguage(xmlResourceParser.nextText());          }        }        if (type==XmlResourceParser.END_TAG) {          if ("Movie".equals(xmlResourceParser.getName())) {            movieList.add(movie);            movie=null;          }        }        type=xmlResourceParser.next();      }      System.out.println("解析結(jié)束");      StringBuffer sBuffer=new StringBuffer();      for (int i = 0; i < movieList.size(); i++) {        sBuffer.append(movieList.get(i).toString())        .append("/n");      }      show_tv.setText(sBuffer.toString());    } catch (Exception e) {      e.printStackTrace();    }

4.Json解析

Json解析的話需要先給出一份JSon數(shù)據(jù),就拿下面的數(shù)據(jù)來解析吧!

private static final String JSONDATA="{name:張三,"      + "age:26,"      + "phone:[131,132],"      + "score:{"      + "語文:100,"      + "數(shù)學:90,"      + "理綜:{化學:80,物理:70,生物:80}}}";

Json解析的過程無疑就是碰到大括號,就new一個Object出來,中括號就new一個Array出來,再用一個for循環(huán)去讀取數(shù)據(jù):

StringBuffer stringBuffer=new StringBuffer();    try {      //JSONObject jsonObject=new JSONObject(JSONDATA);      JSONTokener jsonTokener=new JSONTokener(JSONDATA);      JSONObject jsonObject=(JSONObject) jsonTokener.nextValue();      stringBuffer.append("name:"+jsonObject.getString("name")+"/n");      stringBuffer.append("aeg:"+jsonObject.getString("age")+"/n");      JSONArray phoneArray=jsonObject.getJSONArray("phone");      stringBuffer.append("phone:"+phoneArray.getString(0)                      +"  "+phoneArray.getString(1)+"/n");      JSONObject scoreJsonObject=jsonObject.getJSONObject("score");      stringBuffer.append("語文:"+scoreJsonObject.getString("語文")+"/n")      .append("數(shù)學:"+scoreJsonObject.getString("數(shù)學"));      JSONObject lizongObject=scoreJsonObject.getJSONObject("理綜");      stringBuffer.append("化學:"+lizongObject.getString("化學")+"/n")      .append("物理:"+lizongObject.getString("物理")+"/n")      .append("生物:"+lizongObject.getString("生物"));      show_tv.setText(stringBuffer.toString());    } catch (Exception e) {      e.printStackTrace();    }

5.GSON解析

GSON解析相對來說簡單一些,但也有一定的局限性,比如說,數(shù)據(jù)類的屬性字段和key值必須是一一對應(yīng)的

//拿GSON去解析數(shù)據(jù)時,數(shù)據(jù)類的屬性值跟key值必須是對應(yīng)的    Gson gson=new Gson();    Student student=gson.fromJson(JSONDATA, Student.class);

數(shù)據(jù)類的屬性:

public String name;public String age;public ArrayList<String> phone=new ArrayList<>();public ArrayList<Score> score=new ArrayList<>();public class Score{  public String id;  public String fenshu;}

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VEVB武林網(wǎng)的支持。


注:相關(guān)教程知識閱讀請移步到Android開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
中文字幕亚洲视频| 精品国产亚洲一区二区三区在线| 日韩国产成人在线| 亚洲熟女一区二区| 四虎激情影院| 一二三中文字幕在线| 亚洲精品久久久狠狠狠爱| 人妻无码一区二区三区| 欧美激情在线看| 欧美精品激情在线观看| 91啪国产在线| 极品人妻一区二区| 日本丰满大乳奶| japan高清日本乱xxxx| 午夜欧美视频| 亚洲www视频| 中文字幕在线播放网址| 亚洲四虎影院| 亚洲91精品| 日韩一区视频在线| 日韩高清国产一区在线| 国产精品久久久影院| 国产综合色在线| 4438x成人网最大色成网站| 成人网页在线观看| 欧美日韩高清一区| 麻豆影视国产在线观看| 欧美性受xxxx黑人| 国产成人精品一区二区在线小狼| 99欧美视频| 成人的网站免费观看| 亚州av日韩av| 国产精品亚洲综合天堂夜夜| 日本24小时在线高清视频| 视频1区2区3区| 国产乱肥老妇国产一区二| 成人av午夜影院| 丰满少妇乱子伦精品看片| 亚洲一区免费看| 免费自拍视频| 日韩在线综合网| 91精品视频在线| 国产精品久久久久久久第一福利| 亚洲蜜桃视频| 亚洲色图第一区| 99re在线视频这里只有精品| 日韩小视频在线观看专区| 欧美极品视频一区二区三区| 免费播放片a高清在线观看| 亚洲三级在线观看视频| 精品视频免费观看| 999福利视频| 中文字幕一区二区三区四区久久| 久草中文在线观看| 美女激情福利视频在线观看| 蜜桃av噜噜一区| 国产成人亚洲综合a∨猫咪| 亚洲最大的免费视频网站| 公肉吊粗大爽色翁浪妇视频| 麻豆国产精品va在线观看不卡| 天堂中文字幕——hd| 性xxxxxxxxx| a级免费在线观看| 中文字幕+乱码+中文字幕| 欧美男女性生活在线直播观看| 一区二区三区四区免费| 欧美 日韩 国产 高清| 黄色三级中文字幕| 综合干狼人综合首页| av理论在线观看| 国产精品久久久视频| 亚洲国产影院| 成人性做爰片免费视频| 性感女国产在线| 福利二区91精品bt7086| 久久黄色级2电影| 香蕉视频免费看| 日韩亚洲不卡在线| 日韩黄色片网站| 国产精品理论片在线观看| 日韩mv欧美mv国产网站| 男女羞羞视频教学| 欧美在线观看视频网站| 国产亚洲精品午夜高清影院| 首页亚洲中字| 999久久久免费精品国产牛牛| 国产日韩亚洲欧美精品| a天堂中文字幕| 欧美在线中文字幕| 亚洲亚洲免费| 国产成人无码精品久久久久| 久热这里只精品99re8久| 色综合天天狠狠| 亚洲欧美久久234| 欧美日韩精品综合在线| 国产一区二区三区四区五区传媒| 欧美撒尿777hd撒尿| 欧美成人一区二免费视频软件| 九九热只有这里有精品| 青少年xxxxx性开放hg| 欧美一区二区三区不卡| 精品色999| 一级黄色大片免费观看| 久久久久久国产精品免费免费| 午夜国产福利在线观看| 精品视频久久久久久| 亚洲成人男人天堂| 牛牛影视一区二区三区免费看| 日本午夜精品视频在线观看| 亚洲免费看片| 自拍偷拍国产精品| 亚洲性受xxx喷奶水| 成人一级片网站| 精品国产一区二区三区久久影院| 波多野结衣家庭教师在线播放| 欧美亚洲精品一区二区| 亚洲成年人专区| 美脚恋feet久草欧美| 亚洲三级小视频| 欧美人体做爰大胆视频| 日本高清www| 免费午夜视频在线观看| 国产美女情趣调教h一区二区| 色偷偷福利视频| 久久九九全国免费精品观看| 青青青国内视频在线观看软件| 亚洲精选在线视频| 疯狂欧美牲乱大交777| 在线免费亚洲电影| 日韩最新av在线| 久久久青草婷婷精品综合日韩| 国产男女无遮挡猛进猛出| 一本色道久久综合狠狠躁的番外| 一区在线免费观看| 欧美人妻一区二区三区| 羞羞的视频在线观看| 日韩精品国产一区| 国产一区二区精彩视频| 亚洲一区二区三区777| 精品国精品国产自在久国产应用| 91精品免费久久久久久久久| 国精产品乱码一区一区三区四区| 黄色网址免费看| 男女男精品网站| 91精品久久久久久久久久久久| 91亚洲精品丁香在线观看| 97se亚洲综合在线| 国产精品自拍一区| 日韩电影大全免费观看2023年上| 久久国内精品自在自线400部| a级片在线视频| 一级特黄毛片| 中文字幕国产专区| 96sao精品免费视频观看| 成人午夜一级二级三级| av片在线免费| 男女一区二区三区| 一个人看的日本免费视频| 成人日韩视频| 精品国产制服丝袜高跟| 91综合久久一区二区| 男人天堂网在线观看| av 日韩 人妻 黑人 综合 无码| 老司机2019福利精品视频导航| 激情综合色综合啪啪开心| jizz免费观看视频| 天堂中文在线资| 一区二区自拍| 中文字幕一区二区三区四区不卡| 另类小说一区二区三区| 国产精品丝袜一区二区三区| 日日夜夜国产| 国产小视频在线观看| 久久久久久久香蕉网| 水蜜桃在线免费观看| 亚洲精蜜桃久在线| 国产乱码精品一区二区亚洲| 日韩精品中文字幕一区二区三区| 国产麻豆精品高清在线播放| 日韩av无码中文字幕| 日本成人黄色网| 秋霞av一区二区三区| 中文字幕制服丝袜一区二区三区| 岳张嘴把我的精子吞下去| 特黄特色特刺激视频免费播放| 国产另类图片| 自拍亚洲一区| 性欧美ⅴideo另类hd| 欧美妇女性影城| 中文字幕一区二区三区波野结| 日韩成人在线观看视频| 亚洲一卡二卡三卡四卡五卡| 蜜桃传媒视频第一区入口在线看| 色综合666| 亚洲大黄网站| 色综合综合网| caoporen人人| 欧美性猛交xxxxx水多| 国产精品久久久av| 国产精品午夜久久| 91久久在线播放| 亚洲成国产人片在线观看| 久久久9色精品国产一区二区三区| 新版的欧美在线视频| 台湾无码一区二区| 久久久精品视频免费观看| 日韩黄色片网站| 欧洲美女亚洲激情| 日本免费久久| 日韩1区2区日韩1区2区| 一色道久久88加勒比一| 亚洲激情黄色| 日韩在线观看免费| 午夜精品久久久久久久91蜜桃| www.麻豆av.com| 99精品全国免费观看视频软件| 91麻豆国产自产在线观看亚洲| 欧美性猛片xxxxx免费中国| 一区二区三区四区五区视频| 91porny九色| 国产劲爆久久| 天堂av网手机版| 波多野结衣理论片| 欧美日韩一卡二卡三卡| 少妇欧美激情一区二区三区| 欧美激情 亚洲a∨综合| 水蜜桃一区二区三区| 亚洲激情视频小说| 一区二区三区四区五区精品| 久久精品夜夜夜夜夜久久| 五月婷婷色综合| 欧洲毛片在线视频免费观看| 中文字幕在线视频网| 国产av无码专区亚洲av麻豆| 日本道不卡免费一区| 国内精品久久久久久久果冻传媒| 国产精品免费精品一区| 日本中文在线| 亚洲一区亚洲二区亚洲三区| 久久久久观看| 国产人成高清视频观看| av网站在线免费观看| 激情在线观看视频| 日本一区影院| 鲁大师私人影院在线观看| www日韩在线观看| av在线理伦电影| 国产视频二区三区| 成人a级免费视频| caoporn免费在线视频| 成年人视频免费| 国产精品三级美女白浆呻吟| 国产精品1luya在线播放| 色七七在线观看| 日韩高清不卡| 中文字幕亚洲一区二区va在线| 久久亚洲影院| 欧美黄色一区| 999久久久免费精品国产| 艳妇臀荡乳欲伦亚洲一区| 成人免费视频国产免费观看| 亚洲精品v亚洲精品v日韩精品| 日韩人妻无码一区二区三区99| 亚洲一区二区三区四区五区六区| 97精品国产91久久久久久| 精品一区不卡| 精品国产成人av| 亚洲成人网在线播放| 亚洲一区二区四区蜜桃| 97久精品国产片一区二区三区| 国产精品一区二区三区www| 日韩欧美黄色影院| 国产999精品在线观看| 永久免费精品视频| 一色桃子在线| 国语对白做受xxxxx在线中国| 国产日韩欧美一区二区三区视频| 色婷婷综合久久久久中文字幕| 无码人妻丰满熟妇区毛片18| 精品全国在线一区二区| 午夜啪啪福利视频| 亚洲视频中文字幕在线观看| 亚洲三级在线播放| 久久中文字幕精品| 偷拍精品精品一区二区三区| 亚洲一区二区中文在线| 久久亚洲AV无码专区成人国产| 欧美变态另类刺激| 欧美高清videos性极品| 欧美手机在线| 成人3d动漫在线观看| 黄页网站免费在线观看| 4438全国亚洲精品观看视频| 亚洲色成人网站www永久四虎| 国内精品久久99人妻无码| 免费av片风间由美在线| 一区二区三区av在线| 2020国产精品极品色在线观看| 四虎影视亚洲| 久久国产亚洲| 天堂精品中文字幕在线| 成人在线视频www| 亚洲清纯自拍| 今天免费高清在线观看国语| 国产欧美一区二区三区小说| 国产成人在线视频网址| 美丽的姑娘在线观看免费动漫| 一区二区三区丝袜| 亚洲伊人网在线观看| 欧美高清性xxxxhdvideosex| 精品国产91乱码一区二区三区四区| 碰碰在线视频| 欧美色综合天天久久综合精品| 欧美成人免费电影| 中文字幕欧美在线观看| 中文字幕影音在线| 亚洲黄色在线视频| 老熟女高潮一区二区三区| 2020国产精品自拍| xvideos.蜜桃一区二区| 手机亚洲手机国产手机日韩| 五月婷婷久久久| 嫩草视频免费在线观看| 中文精品在线| 欧美做爰猛烈大尺度视频| av电影在线观看网址| 免费毛片观看| 久一区二区三区|