android用pull解析xml文件

来源:互联网 发布:淘宝号查询信誉网址 编辑:程序博客网 时间:2024/06/05 08:31
用pull解析xml文件:


XML文件内容
<?xml version="1.0" encoding="UTF-8"?>
<persons>
<person id=“18">
<name>allen</name>
<age>36</age>
</person>
<person id=“28">
<name>james</name>
<age>25</age>
</person>
</persons>






public ArrayList<Person> xmlPullParser(InputStream xml) throws Exception{
 第一步:创建一个pull解析器:
 第一种
 XmlPuttParser pullParser = XmlPullParserFactory.new Instance().newPullParser();
 第二种:
 XmlPuttParser pullParser = Xml.newPullParser();




 第二步:为pull解析器设置它要进行解析的xml数据;
 pullParser.serInput(InputStream inputStream,String inputEncoding);
 pullParser.serInput(xml,"UTF-8");//第二个参数是指定解析编码
 pull解析器每解析一行,就会触发一个事件




 第三步:解析:
 ArrayList<Person> persons = null;
 Int event = pullParser.getEventType();//事件返回一个整数
 //xml文件有相应的语法,对应的语法会触发对应的事件;
 while(event != XmlPullParser.END_DOCUMENT){//触发的事件不是文档结束则继续读
   switch(event){
case XmlPullParser.START_DOCUMENT://这里对应的是文件开始事件
//这里做数据处理的开始行为
persons = new ArrayList<Person>();
break;


case XmlPullParser.STRAT_TAG://这里是一个标签的开始事件
if("person".equals(pullParser.getName())){
int id = new Integer(pullParser.getAttributeValue(0));
Person person = new Person();
person.setId(id);
}
if("name".equals(pullParser.getName())){
  String name = pullParser.nextText();//获取<name>标签后面的文本内容
person.setName(name);
}
if("age".equals(pullParser.getName())){
String name = pullParser.nextText();
person.setName(age);
}
break;


case XmlPullParser.END_TAG://这里触发的是一个标签的结束事件
if("person".equals(pullParser.getName())){
persons.add(person);
}
break;

   }
   event = pullParser.next();//这里要把解析器的指针向后移一位,如果不做,则解析器不会往 后走。


   //返回persons队列


 }
}


测试方法:
InputStream xml = this.getClass().getClassLoader().getResourceAsStream("person.xml");
//调用方法
List<Person> persons = xmlPullParser(xml);




安卓的xml文件中给一个按钮添加如下语句:
android:onClick=""//这里指定一个方法,一旦按钮被点击,则会触发该方法。
这个方法应该写在这个布局文件对应的Activity文件中
0 0