Android学习第七天————通过android提供的XmlPullParserFactory解析XML文件

来源:互联网 发布:编程与cnc编程 编辑:程序博客网 时间:2024/05/21 21:50

示例代码

XML文件

<?xml version="1.0" encoding="UTF-8"?><users><user><name>小王</name><age>22</age></user><user><name>小李</name><age>23</age></user><user><name>萧晨</name><age>24</age></user></users>


public class XmlUnil {private InputStream input;public XmlUnil(InputStream input){this.input=input;}public List<User> parse(){XmlPullParserFactory factory=null;XmlPullParser xpp=null;List<User> userlist=null;try {//从XML解析工厂中获得工厂实例factory = XmlPullParserFactory.newInstance();factory.setNamespaceAware(true);//获得XML解析器xpp=factory.newPullParser();//获得输入流xpp.setInput(new InputStreamReader(input));//获得当前节点的事件类型int eventType=xpp.getEventType();//得到标签的名称String tagName=null;User user=null;//当不是结束根节点是循环每个节点while(eventType!=XmlPullParser.END_DOCUMENT){if(eventType==XmlPullParser.START_DOCUMENT){//如果是文档的开始,创建集合userlist=new ArrayList<User>();System.out.println("--------获得集合对象");}else if(eventType==XmlPullParser.START_TAG){//如果是开始标签//得到开始标签的名称tagName=xpp.getName();if(tagName.equals("user")){//如果标签名称是useruser=new User();System.out.println("实例化用户对象");}}else if(eventType==XmlPullParser.TEXT){//如果是标签类型是文本if(tagName.equals("name")){//如果文本标签的前一个标签是name标签user.setName(xpp.getText());System.out.println("设置name");}else if(tagName.equals("age")){//如果文本标签的前一个标签是age标签user.setAge(Integer.parseInt(xpp.getText()));System.out.println("设置age");}}else if(eventType==XmlPullParser.END_TAG){//如果是结束标签tagName=xpp.getName();if(tagName.equals("user")){//结束标签式user,将其添加到集合中userlist.add(user);System.out.println("添加进集合");}}eventType=xpp.next();}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}return userlist;}}


0 0
原创粉丝点击