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 }

 

posted @ 2016-06-07 20:25  HuberyQian  阅读(5535)  评论(0编辑  收藏  举报