日本免费精品_最新日韩一区_亚洲视频一区在线_a在线视频观看_天天射夜夜骑_粉嫩av一区二区三区_欧美中日韩免费视频_综合图区欧美_国内精品美女在线观看_午夜精品久久久久久久男人的天堂

首頁 > 系統(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)建一個(gè)DocumentBuilderFactory對象    DocumentBuilderFactory dBuilderFactory=DocumentBuilderFactory.newInstance();    try {      //2.創(chuàng)建一個(gè)DocumentBuilder對象      DocumentBuilder dBuilder=dBuilderFactory.newDocumentBuilder();      //3.獲取Document對象      Document document=dBuilder.parse("Movie.xml");      System.out.println("解析開始:--------------------------");      //獲取Movie元素結(jié)點(diǎn)集合      NodeList movies=document.getElementsByTagName("Movie");      System.out.println("共有"+movies.getLength()+"部電影");      //遍歷Movie元素結(jié)點(diǎn)集合      for(int i=0;i<movies.getLength();i++){        System.out.println("=====================");        System.out.println("正在解析"+(i+1)+"部電影!");        Node movie=movies.item(i);        //獲取元素結(jié)點(diǎn)的屬性集合        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é)點(diǎn)集合        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é)點(diǎn)名:"+child.getNodeName()+"    ");            //System.out.println("節(jié)點(diǎn)值:"+child.getNodeValue());            System.out.println("節(jié)點(diǎn)值:"+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.拿到一個(gè)SAXParser解析對象    try {      SAXParser saxParser=sParserFactory.newSAXParser();      saxParser.parse("Movie.xml",new MyHandler() );    } catch (Exception e) {      e.printStackTrace();    }

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

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

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

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

@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é)點(diǎn)值:"+value);    }  }

4)endElement(),表示解析到了一個(gè)元素的結(jié)束標(biāo)簽,在該方法里面可以去 構(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);    }    //解析完一個(gè)元素時(shí)回調(diào)    if ("Movie".equals(qName)) {      movieList.add(movie);      movie=null;      System.out.println("第"+count+"部電影解析結(jié)束!");    }  }

5)endDocument(),當(dāng)執(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)首先拿到一個(gè)Pull資源解析器,有時(shí)如果通過網(wǎng)絡(luò)上下載xml文件的話,則需要去構(gòu)造一個(gè)Pull解析器,再將流設(shè)置給pull解析器, 接下來就是一樣的,一個(gè)標(biāo)簽一個(gè)標(biāo)簽的去解析

//拿到一個(gè)XMLResourceParser    //XmlPullParser parser=Xml.newPullParser();    //parser.setInput(in);    XmlResourceParser xmlResourceParser=getResources().getXml(R.xml.movie);    //拿到第一個(gè)事件類型,也就是最外層的標(biāo)簽    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ù)學(xué):90,"      + "理綜:{化學(xué):80,物理:70,生物:80}}}";

Json解析的過程無疑就是碰到大括號,就new一個(gè)Object出來,中括號就new一個(gè)Array出來,再用一個(gè)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ù)學(xué):"+scoreJsonObject.getString("數(shù)學(xué)"));      JSONObject lizongObject=scoreJsonObject.getJSONObject("理綜");      stringBuffer.append("化學(xué):"+lizongObject.getString("化學(xué)")+"/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í),數(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)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對VEVB武林網(wǎng)的支持。


注:相關(guān)教程知識閱讀請移步到Android開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
成人福利一区| 午夜国产福利一区二区| 欧美日韩精品欧美日韩精品一| 91久久久精品| 中文字幕日韩视频| 久久精品电影| 日韩激情一区| 欧美日韩国产片| 欧美自拍一区| 日韩欧美色综合网站| 中文字幕亚洲欧美| 精品日韩视频在线观看| 91精品婷婷国产综合久久| 精品人妻一区二区三区视频| 日韩国产亚洲欧美| 国产三级在线| 91久久中文| 国产在线精品国自产拍免费| 欧美二区在线观看| 免费国产成人看片在线| 精品视频三区| 国产福利一区在线观看| 一区二区不卡视频在线观看| 99pao成人国产永久免费视频| 亚洲人成欧美中文字幕| 国产欧美中文字幕| 日韩精品视频中文在线观看| 日韩欧美视频一区二区三区四区| 日韩一级二级三级| 999精品网| 国产亚洲欧美色| 综合图区亚洲白拍在线| 欧美久久久久久蜜桃| 中文字幕一区免费| 久久婷婷综合国产| 亚洲第一视频在线观看| 国产一区深夜福利| 欧美日韩在线综合| 国产一级免费| 欧美日韩精品综合| 欧美日韩久久久| 日韩在线视频精品| 日韩在线不卡一区| 欧美三级免费观看| 综合激情一区| 中文字幕一区免费| a天堂在线资源| 日韩国产亚洲欧美| 中文天堂资源在线| 欧美亚洲视频在线看网址| 免费一级欧美在线观看视频| 蜜臀91精品国产高清在线观看| 欧美日韩乱国产| 国产三级精品网站| 欧美日韩国产高清视频| 91精品国产亚洲| 久久蜜桃一区二区| 色猫猫国产区一区二在线视频| av免费观看网站| 亚洲高清在线免费| 激情五月综合| 日韩精品视频中文字幕| 亚洲第一网中文字幕| 亚洲第一视频网站| 日韩免费视频一区| 亚洲校园欧美国产另类| 日韩一级网站| 一区二区三区高清在线| 精品福利在线观看| 欧美日韩精品电影| 国产在线观看黄色| 在线观看免费国产成人软件| 国产乱码午夜在线视频| 免费高清视频日韩| 伊人精品视频| 国产乱国产乱300精品| 国产欧美在线观看| 欧洲一级精品| 欧美日韩精品不卡| 精品三级久久| 欧美一级日韩一级| av三级在线观看| 日韩你懂的电影在线观看| 一区二区在线观看不卡| 亚洲综合日韩欧美| 精品福利二区三区| 成片免费观看| 在线观看91精品国产入口| 欧美日韩亚洲一| 亚洲欧洲国产视频| 中文字幕精品在线视频| 欧美乱大交xxxxx另类| 91精品国产91综合久久蜜臀| 91亚洲国产| 亚洲一区不卡在线| 视频一区中文字幕国产| 日韩字幕在线观看| 亚洲一区精品在线| 91精品国产调教在线观看| 国产高清不卡av| 欧美日韩国产高清| 天堂精品高清1区2区3区| 一区二区三区在线播放欧美| 国产一级片在线播放| 91精品国产手机| 欧美日韩一二三| 精品久久九九| 二区视频在线观看| 久久久水蜜桃| 国产一区免费视频| 日韩中文字幕网| 日韩精品丝袜在线| 中文字幕日韩欧美在线视频| 久久精品日韩欧美| 亚洲尤物av| 尤物在线精品| 日韩欧美在线不卡| 日韩欧美国产高清| 日韩欧美高清在线| 久久久精品日韩欧美| 国产一卡2卡3卡四卡网站| 久久精品久久久久| 国产在线黄色片| 精品亚洲成a人片在线观看| 伊人网站在线| 欧美不卡123| 欧美日韩国产页| 91精品网站| 天天综合天天做| 婷婷精品进入| 中文字幕日韩在线视频| 午夜一区二区三区视频| 国产欧美高清在线| 日韩三级视频在线| 国产一卡2卡3卡四卡网站| 日韩视频一区| 日韩欧美不卡在线| 国内精品99| 亚洲成在线观看| 国产福利在线导航| 91精品日本| 欧美在线视频二区| 欧美不卡123| 91精品国产高清91久久久久久| 精品一区二区在线观看视频| 一级片在线免费看| 欧美一级一级性生活免费录像| 日韩wumaV| 国产欧美在线观看| 亚洲欧美视频一区二区三区| 国产福利一区在线观看| 国产一级片播放| 中文字幕最新精品| 日韩欧美在线中字| 国产一级片播放| 久久 天天综合| 91亚洲欧美| 免费高清特黄a大片| 国产欧美日韩三级| 中文字幕精品在线视频| 国产丝袜在线播放| 国产一级在线免费观看| 国产一区激情在线| a√免费观看在线网址www| 久久久99免费| 久久久精品国产免费观看同学| 国产福利免费在线观看| 一二三区精品视频| 成人精品视频一区| 欧美变态tickling挠脚心| 在线欧美一级视频| 久久视频免费看| 人成免费在线视频 | 日韩在线三区| 中文在线不卡视频| 在线看欧美日韩| 精品视频1区2区3区| 久久蜜桃精品| 在线一区免费| 日韩久久久精品| 日韩欧美一级精品久久| 日韩亚洲一区在线| 一区二区三区在线播放欧美| 亚洲视频资源在线| 日本精品国语自产拍在线观看| www日韩欧美| 黄色一区二区视频| 中文字幕第一页在线播放| 中文字幕 亚洲视频| 国产免费永久在线观看| 免费在线国产| 国产欧美日韩第一页| 91精品电影| 精品日韩视频在线观看| 欧美日韩国产一二| 日韩a一区二区| 91精品啪在线观看国产60岁| av中文在线播放| 亚洲午夜久久| 欧美中文字幕第一页| 国产wwww| 深夜福利一区二区| 精品亚洲综合| 91精品国产91综合久久蜜臀| 午夜国产福利一区二区| 日韩精品在线观看视频| 国产三级视频网站| 欧美日韩国产免费观看视频| 欧美性生交大片免费| 国产最顶级的黄色片在线免费观看| 91精品国产91久久久久久三级| 欧美日韩亚州综合| 在线国产一级| 91精品视频免费在线观看| 精品区一区二区| 在线资源av| 中文字幕亚洲乱码| 中文字幕亚洲字幕| 中文字幕在线视频第一页| 高清不卡一区二区| 欧美国产日韩综合| wwwwww在线观看| 欧美三级日韩三级| 亚洲一区在线观看网站| 精品在线网站观看| 欧美sm一区| 日韩免费久久| 国产99亚洲| 日本熟女一区二区| 91精品视频国产| 欧美中文字幕在线| 中文字幕99| 日韩精品久久久| 国产成人综合av| 亚洲高清视频一区| 亚洲.国产.中文慕字在线| 国产视频一区三区| 欧美专区中文字幕| 不卡视频一区二区三区| 欧美日韩在线看| 国产裸体歌舞团一区二区| 视频一区日韩| 国产成人一区二区精品非洲| 亚洲欧美韩国综合色| 91精品国产手机| 欧美中文字幕在线| √天堂资源中文www| 欧美日韩尤物久久| 亚洲精品欧美二区三区中文字幕 | 欧美日韩一二三| 国产婷婷色一区二区三区在线| 日韩精品在线免费播放| 国产成人精品综合久久久| 欧美中文字幕精品| 久精品在线观看| 精品调教chinesegay| 久久99久久久久久久噜噜| 在线国产91| 亚洲欧美日本另类| 在线不卡一区二区| av三级在线播放| 中文av字幕一区| 黄色片免费看| 欧美日韩成人综合| 在线观看免费国产小视频| 国产高清精品在线| 亚洲高清在线免费| 91精品国产综合久久精品| 精品极品三级久久久久| 欧美日韩中文字幕在线视频| 日韩精品午夜| 国产欧美久久久| 一二三区精品视频| 欧美日韩国产免费观看视频| 亚洲一区中文字幕在线观看| 亚洲一区导航| 二区中文字幕| 国产乱码在线观看| 亚洲永久免费视频| 免费视频国产一区| 中文字幕亚洲高清| 亚洲中文字幕在线一区| 激情综合色综合久久| 日韩精品首页| 精品亚洲综合| 久久久精品午夜少妇| 又黄又www的网站| 99精品视频99| wwwav在线播放| 亚洲中文字幕在线一区| 日韩视频专区| 国产精久久久久| 成人ww免费完整版在线观看| 欧美日韩在线精品一区二区三区激情综| 久久 天天综合| 91久久精品午夜一区二区| 麻豆一区二区99久久久久| 欧美在线日韩| 国产拍揄自揄精品视频麻豆| 在线精品视频免费播放| 最近中文字幕日韩精品| 一区二区视频在线| 欧美亚洲视频在线看网址| 欧美国产亚洲一区| 国产精久久久久| 国产在线第一页| 一区二区91| 欧美日韩国产不卡| 午夜一区二区三区免费| 国产资源在线观看| 日韩精品在线视频观看| 欧美日韩国产不卡| 亚洲国产午夜精品| 国产三级在线| 中文字幕亚洲在| 亚洲狠狠婷婷综合久久久久图片| 国产69精品久久app免费版| 99亚洲视频| 成人a在线观看| 国产日韩电影| 国产日韩精品在线| 精品精品久久| 美日韩精品免费视频| 视频一区中文字幕国产| 亚洲国产91精品在线观看| 国产成人精品av久久| 国产农村妇女精品一二区| 国产高清精品在线| 在线一区二区三区精品| 欧美一卡2卡3卡4卡| 欧美亚洲专区| 国产一级免费在线观看| 日韩精品在线第一页| 亚洲女人天堂a在线播放| 91精品国产综合久久香蕉最新版| 国产乱码午夜在线视频| 久草视频在线看| 欧美在线视频二区| 欧美日韩国产在线| 1区2区3区在线视频| 国产一级在线免费观看| 韩国av一区二区| 精品999视频| 成年人看的羞羞网站| 日韩亚洲欧美中文三级| 一区二区在线视频播放| 日韩福利视频导航| 日韩国产专区| 91国内在线| 最新中文字幕在线播放| 国产小视频在线| 日韩精品视频免费看| 日韩中文字幕在线播放| 日韩中文在线视频| 亚洲视频在线观看日本a| 欧美日韩久久久| 欧美日韩高清一区二区| 精品国产31久久久久久| 欧美日韩中文字幕| 亚洲视频在线观看日本a| 欧美日韩激情一区| 精品av中文字幕在线毛片| 亚洲欧美中文字幕在线观看| 一区二区视频在线观看免费的| 精品成人久久久| 本道综合精品| 在线欧美日韩精品| 欧美日韩综合色| 91精品久久久久久久91蜜桃| 欧美日韩中文字幕一区| 日韩免费视频一区二区视频在线观看| 亚洲理论中文字幕| 国内不卡的二区三区中文字幕| 国产成人日日夜夜| 国产视频1区2区| 99亚洲视频| 亚洲精品欧美二区三区中文字幕| 国产一区不卡精品| 黄色在线播放网站| 亚洲一区日韩精品中文字幕| 久久99久久久久久久噜噜| 亚洲一区视频在线观看视频| 亚洲欧洲国产视频| 国产一区不卡精品| 国产一级片在线播放| 亚洲开心激情| 午夜少妇久久久久久久久| 精品视频www| 免费精品国产自产拍观看| 亚洲va久久久噜噜噜久久| 亚洲高清不卡一区| 日韩欧美一级在线播放| 国产在线一区二区视频| 狠狠色噜噜狠狠狠狠97| 国产成人精品999在线观看| 国产 欧美 在线| 欧美日韩综合色| 在线视频你懂得一区| 999精品色在线播放| 91精品国产高清91久久久久久|