安卓使用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 }
生命不息,学习不止