zoukankan      html  css  js  c++  java
  • 安卓使用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
  • 相关阅读:
    leetcode 33. Search in Rotated Sorted Array
    leetcode 32. Longest Valid Parentheses
    leetcode 28. Implement strStr()
    leetcode 27. Remove Element
    leetcode 26. Remove Duplicates from Sorted Array
    leetcode 24. Swap Nodes in Pairs
    leetcode 22. Generate Parentheses
    树莓派的频率管理和热控制
    sql执行insert插入一条记录同时获取刚插入的id
    全程直播个人博客重构过程,采用springboot+dubbo+jpa技术栈。
  • 原文地址:https://www.cnblogs.com/reader/p/5103869.html
Copyright © 2011-2022 走看看