InputStream流解析 XML文件
1 // 根据InputStream流解析 XML文件 2 private void getNewsFromStream(InputStream is){ 3 // 1.创建XML pull 解析器 谷歌内置解析器 4 XmlPullParser xp = Xml.newPullParser(); 5 try { 6 //2.指定解析器要解析的文件 和解析文件所用到的编码方式 7 xp.setInput(is,"utf-8"); 8 //3.开始解析文件(在解析之前需要有 JavaBean,先创建JavaBean) 9 10 // 获取事件类型,通过事件类型 去判断当前解析的是什么节点 11 int type = xp.getEventType(); 12 ArrayList<News> newsList=null; 13 News news=null; 14 while(type!=XmlPullParser.END_DOCUMENT){ 15 // 通过解析不同的节点进行不同的操作 16 switch (type) { 17 case XmlPullParser.START_TAG: 18 // pull解析器的getName 是获取当前节点的名字。 19 if("newslist".equals(xp.getName())){ 20 newsList = new ArrayList<News>(); 21 } 22 else if("news".equals(xp.getName())){ 23 news = new News(); 24 } 25 else if("title".equals(xp.getName())){ 26 try { 27 String title = xp.nextText(); 28 news.setTitle(title); 29 } catch (IOException e) { 30 // TODO Auto-generated catch block 31 e.printStackTrace(); 32 } 33 } 34 else if("comment".equals(xp.getName())){ 35 try { 36 String comment = xp.nextText(); 37 news.setComment(comment); 38 } catch (IOException e) { 39 // TODO Auto-generated catch block 40 e.printStackTrace(); 41 } 42 } 43 else if("detail".equals(xp.getName())){ 44 try { 45 String detail = xp.nextText(); 46 news.setDetail(detail); 47 } catch (IOException e) { 48 // TODO Auto-generated catch block 49 e.printStackTrace(); 50 } 51 } 52 else if("image".equals(xp.getName())){ 53 try { 54 String imageurl = xp.nextText(); 55 news.setImageurl(imageurl); 56 } catch (IOException e) { 57 // TODO Auto-generated catch block 58 e.printStackTrace(); 59 } 60 } 61 break; 62 case XmlPullParser.END_TAG: 63 if("news".equals(xp.getName())){ 64 newsList.add(news); 65 } 66 break; 67 } 68 try { 69 // 让解析器的指针后移,并返回事件类型 70 type = xp.next(); 71 } catch (IOException e) { 72 // TODO Auto-generated catch block 73 e.printStackTrace(); 74 } 75 } 76 77 } catch (XmlPullParserException e) { 78 // TODO Auto-generated catch block 79 e.printStackTrace(); 80 } 81 } 82 83 }