InputStream is = getClassLoader().getResourceAsStream("weather.xml"); XmlPullParser xp = Xml.newPullParser();拿到指針所在當前節點的事件類型
int type = xp.getEventType();事件類型主要有五種
如果獲取到的事件類型不是END_DOCUMENT,就說明解析還沒有完成,如果是,解析完成,while循環結束
while(type != XmlPullParser.END_DOCUMENT)當我們解析到不同節點時,需要進行不同的操作,所以判斷一下當前節點的name
當解析到name開始節點時,獲取下一個節點的文本內容,temp、pm也是一樣
case XmlPullParser.START_TAG://獲取當前節點的名字 if("weather".equals(xp.getName())){ citys = new ArrayList<City>(); } else if("city".equals(xp.getName())){ city = new City(); } else if("name".equals(xp.getName())){ //獲取當前節點的下一個節點的文本 String name = xp.nextText(); city.setName(name); } else if("temp".equals(xp.getName())){ String temp = xp.nextText(); city.setTemp(temp); } else if("pm".equals(xp.getName())){ String pm = xp.nextText(); city.setPm(pm); } break;當解析到city的結束節點時,說明city的三個子節點已經全部解析完了,把city對象添加至list
case XmlPullParser.END_TAG: if("city".equals(xp.getName())){ citys.add(city); }
//獲取到src文件夾下的資源文件 InputStream is = getClassLoader().getResourceAsStream("weather.xml"); //拿到pull解析器對象 XmlPullParser xp = Xml.newPullParser(); //初始化 try { xp.setInput(is, "gbk"); //獲取當前節點的事件類型,通過事件類型的判斷,我們可以知道當前節點是什么節點,從而確定我們應該做什么操作 int type = xp.getEventType(); City city = null; while(type != XmlPullParser.END_DOCUMENT){ //根據節點的類型,要做不同的操作 switch (type) { case XmlPullParser.START_TAG: // 獲取當前節點的名字 if("weather".equals(xp.getName())){ //創建city集合對象,用于存放city的javabean cityList = new ArrayList<City>(); } else if("city".equals(xp.getName())){ //創建city的javabean對象 city = new City(); } else if("name".equals(xp.getName())){ // 獲取當前節點的下一個節點的文本 String name = xp.nextText(); city.setName(name); } else if("temp".equals(xp.getName())){ // 獲取當前節點的下一個節點的文本 String temp = xp.nextText(); city.setTemp(temp); } else if("pm".equals(xp.getName())){ // 獲取當前節點的下一個節點的文本 String pm = xp.nextText(); city.setPm(pm); } break; case XmlPullParser.END_TAG: if("city".equals(xp.getName())){ //把city的javabean放入集合中 cityList.add(city); } break; } //把指針移動到下一個節點,并返回該節點的事件類型 type = xp.next(); } for (City c : cityList) { System.out.PRintln(c.toString()); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }
新聞熱點
疑難解答