加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

pull解析xml

发布时间:2020-12-16 07:39:56 所属栏目:百科 来源:网络整理
导读:http://www.blogjava.net/sxyx2008/archive/2010/08/04/327885.html 在上文中介绍了使用sax方式解析xml,这里介绍下在Android中极力推荐的xmlpull方式解析xml。xmlpull不仅仅可以使用在Android上,同样也适用于javase,但在javase环境下,你需要自己去获取xm

http://www.blogjava.net/sxyx2008/archive/2010/08/04/327885.html

在上文中介绍了使用sax方式解析xml,这里介绍下在Android中极力推荐的xmlpull方式解析xml。xmlpull不仅仅可以使用在Android上,同样也适用于javase,但在javase环境下,你需要自己去获取xmlpull所依赖的类库。

环境:

kxml2-2.3.0.jar

xmlpull_1_1_3_4c.jar

以上两个jar分别从以下网站下载:

http://www.xmlpull.org/ xmlpull

http://kxml.sourceforge.net/ kxml

xml文件:

<?xmlversion="1.0"encoding="UTF-8"?>
<root>
studentid="1"group="1"name>张三</sex>age>18email>zhangsan@163.combirthday>1987-06-08memo>好学生student="2"="2">李四>>lisi@163.com="3"="3">小王>xiaowang@163.com="4"="4">小张>xiaozhang@163.com="5"="5">小明>xiaoming@163.com>

Xml对应的实体bean文件:

packagecom.parsexml.entity;

publicclassStudent{

privateintid;
intgroup;
privateStringname;
privateStringsex;
intage;
privateStringemail;
privateStringmemo;
privateStringbirthday;
intgetId(){
returnid;
}
voidsetId(intid){
this.id=id;
}
intgetGroup(){
returngroup;
}
voidsetGroup(intgroup){
this.group=group;
}
publicStringgetName(){
returnname;
}
voidsetName(Stringname){
this.name=name;
}
publicStringgetSex(){
returnsex;
}
voidsetSex(Stringsex){
this.sex=sex;
}
intgetAge(){
returnage;
}
voidsetAge(intage){
this.age=age;
}
publicStringgetEmail(){
returnemail;
}
voidsetEmail(Stringemail){
this.email=email;
}
publicStringgetMemo(){
returnmemo;
}
voidsetMemo(Stringmemo){
this.memo=memo;
}
publicStringgetBirthday(){
returnbirthday;
}
voidsetBirthday(Stringbirthday){
this.birthday=birthday;
}

}

Pull解析代码

packagecom.parsexml;

importjava.io.IOException;
importjava.util.ArrayList;
importjava.util.List;

importorg.xmlpull.v1.XmlPullParser;
importorg.xmlpull.v1.XmlPullParserException;
importorg.xmlpull.v1.XmlPullParserFactory;

importcom.parsexml.entity.Student;

classPullParseXml{


publicList<Student>PullParseXML(){

List<Student>list=null;
Studentstudent=null;

//构建XmlPullParserFactory
try{
XmlPullParserFactorypullParserFactory=XmlPullParserFactory.newInstance();
获取XmlPullParser的实例
XmlPullParserxmlPullParser=pullParserFactory.newPullParser();
设置输入流xml文件
xmlPullParser.setInput(Thread.currentThread().getContextClassLoader().getResourceAsStream("Student.xml"),"UTF-8");

开始inteventType=xmlPullParser.getEventType();

try{
while(eventType!=XmlPullParser.END_DOCUMENT){
StringnodeName=xmlPullParser.getName();
switch(eventType){
文档开始caseXmlPullParser.START_DOCUMENT:
list=newArrayList<Student>();
break;
开始节点caseXmlPullParser.START_TAG:
判断如果其实节点为studentif("student".equals(nodeName)){
实例化student对象
student=newStudent();
设置Id属性
student.setId(Integer.parseInt(xmlPullParser.getAttributeValue(0)));
设置Group属性
student.setGroup(Integer.parseInt(xmlPullParser.getAttributeValue(1)));
}elseif("name".equals(nodeName)){
设置name
student.setName(xmlPullParser.nextText());
}if("sex".equals(nodeName)){
设置sex
student.setSex(xmlPullParser.nextText());
}if("age".equals(nodeName)){
设置age
student.setAge(Integer.parseInt(xmlPullParser.nextText()));
}if("email".equals(nodeName)){
设置email
student.setEmail(xmlPullParser.nextText());
}if("birthday".equals(nodeName)){
设置birthday
student.setBirthday(xmlPullParser.nextText());
}if("memo".equals(nodeName)){
设置memo属性
student.setMemo(xmlPullParser.nextText());
}
结束节点caseXmlPullParser.END_TAG:
if("student".equals(nodeName)){
list.add(student);
student=null;
}
default:
break;
}
eventType=xmlPullParser.next();
}
}catch(NumberFormatExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}
}catch(XmlPullParserExceptione){
e.printStackTrace();
}

returnlist;
}

staticvoidmain(String[]args){
List<Student>list=newPullParseXml().PullParseXML();
for(Studentstudent:list){
System.out.println("id:"+student.getId()+"tgroup:"+student.getGroup()+"tname:"+student.getName()+"tsex:"+student.getSex()+"tage:"+student.getAge()+"temail:"+student.getEmail()+"tbirthday:"+student.getBirthday()+"tmemo:"+student.getMemo());
}
}

}

注:若工程中缺少kxml2-2.3.0.jar文件则会报以下异常信息:



你应该添加kxml2-2.3.0.jar包到你的classpath下

效果图:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读