pull解析其实和我们上章学的sax解析原理非常类似,在android中非常常用.
在java中,需自己获取xmlpull所依赖的类库分别为:kxml2-2.3.0.jar,xmlpull_1_1_3_4c.jar。
pull和sax区别
xmlpullparser中常用方法如下:
getname(); //获取当前元素名 gettextcharacters(); //获取当前内容(当geteventtype ()==text时通过这个来获取元素内容) nexttext(); //获取下个内容(当geteventtype ()==start_tag时通过这个来获取元素内容)
3.persons.xml示例如下
<?xml version="1.0" encoding="utf-8" standalone="no"?> <persons> <person> <姓名>张三</姓名> <性别>男</性别> <年龄>99</年龄> </person> <person> <姓名>李四</姓名> <性别>男</性别> <年龄>17</年龄> </person> </persons>
4.代码如下
@test public void pullparsexml() throws exception{ arraylist<person> list = null; person person = null; //1.获取xmlpullparser解析器,通过xmlpullparserfactory工厂类获取 xmlpullparserfactory xmlpullparserfactory = xmlpullparserfactory.newinstance(); xmlpullparser xmlpullparser = xmlpullparserfactory.newpullparser(); //2.设置解析器的输入文件以及格式 xmlpullparser.setinput(new fileinputstream(new file("src//persons.xml")),"utf-8"); //3.while获取当前事件类型.然后获取元素名、内容等,直到遇到end_document(文档结束)退出. int type = xmlpullparser.geteventtype(); while(type!=xmlpullparser.end_document) { if(type==xmlpullparser.start_tag) //开始元素 { if("persons".equals(xmlpullparser.getname())) { list = new arraylist<person>(); } else if("person".equals(xmlpullparser.getname())) { person = new person(); } else if("姓名".equals(xmlpullparser.getname())) { person.setname(xmlpullparser.nexttext()); } else if("性别".equals(xmlpullparser.getname())) { person.setsex(xmlpullparser.nexttext()); } else if("年龄".equals(xmlpullparser.getname())) { person.setage(xmlpullparser.nexttext()); } } else if(type==xmlpullparser.end_tag) //结束元素 { if("person".equals(xmlpullparser.getname())) { list.add(person); } } type = xmlpullparser.next(); } //打印: for(person person1:list){ system.out.println(person1); } }
打印:
如对本文有疑问, 点击进行留言回复!!
Mybatis PersistenceException异常:Error building SqlSession The error may exist in SQL Mapper Configur
MyBatis——动态SQL语句——if标签和where标签复合使用
网友评论