pull解析

来源:互联网 发布:在北京干什么挣钱知乎 编辑:程序博客网 时间:2024/05/29 13:43

XmlPullParser

例:

public class MainActivity extends Activity {

 

         List<City> cityList;

         @Override

         protected void onCreate(Bundle savedInstanceState) {

                   super.onCreate(savedInstanceState);

                   setContentView(R.layout.activity_main);

         }

 

         public void click(View v){

                   //获取到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集合对象,用于存放cityjavabean

                                                        cityList = new ArrayList<City>();

                                               }

                                               else if("city".equals(xp.getName())){

                                                        //创建cityjavabean对象

                                                        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())){

                                                        //cityjavabean放入集合中

                                                        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();

                   }

         }

 

}

0 0