安卓使用pull解析器解析XML文件

学习一下:

 1 public class MainActivity extends Activity {
 2 
 3     List<City> cityList;
 4     @Override
 5     protected void onCreate(Bundle savedInstanceState) {
 6         super.onCreate(savedInstanceState);
 7         setContentView(R.layout.activity_main);
 8     }
 9 
10     public void click(View v){
11         //获取到src文件夹下的资源文件
12         InputStream is = getClassLoader().getResourceAsStream("weather.xml");
13         
14         //拿到pull解析器对象
15         XmlPullParser xp = Xml.newPullParser();
16         //初始化
17         try {
18             xp.setInput(is, "gbk");
19             
20             //获取当前节点的事件类型,通过事件类型的判断,我们可以知道当前节点是什么节点,从而确定我们应该做什么操作
21             int type = xp.getEventType();
22             City city = null;
23             while(type != XmlPullParser.END_DOCUMENT){
24                 //根据节点的类型,要做不同的操作
25                 switch (type) {
26                 case XmlPullParser.START_TAG:
27                     //                    获取当前节点的名字
28                     if("weather".equals(xp.getName())){
29                         //创建city集合对象,用于存放city的javabean
30                         cityList = new ArrayList<City>();
31                     }
32                     else if("city".equals(xp.getName())){
33                         //创建city的javabean对象
34                         city = new City();
35                     }
36                     else if("name".equals(xp.getName())){
37                         //                获取当前节点的下一个节点的文本
38                         String name = xp.nextText();
39                         city.setName(name);
40                     }
41                     else if("temp".equals(xp.getName())){
42                         //                获取当前节点的下一个节点的文本
43                         String temp = xp.nextText();
44                         city.setTemp(temp);
45                     }
46                     else if("pm".equals(xp.getName())){
47                         //                获取当前节点的下一个节点的文本
48                         String pm = xp.nextText();
49                         city.setPm(pm);
50                     }
51                     break;
52                 case XmlPullParser.END_TAG:
53                     if("city".equals(xp.getName())){
54                         //把city的javabean放入集合中
55                         cityList.add(city);
56                     }
57                     break;
58 
59                 }
60                 
61                 //把指针移动到下一个节点,并返回该节点的事件类型
62                 type = xp.next();
63             }
64             
65             for (City c : cityList) {
66                 System.out.println(c.toString());
67             }
68         } catch (Exception e) {
69             // TODO Auto-generated catch block
70             e.printStackTrace();
71         }
72     }
73 
74 }
Main.java

 

posted @ 2016-01-05 21:40  蜗牛噢  阅读(320)  评论(0编辑  收藏  举报