Android--使用XMLPull解析xml
生活随笔
收集整理的這篇文章主要介紹了
Android--使用XMLPull解析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文件:
<?xml version="1.0" encoding="UTF-8"?> <root><student id="1" group="1"><name>張三</name><sex>男</sex><age>18</age><email>zhangsan@163.com</email><birthday>1987-06-08</birthday><memo>好學生</memo></student><student id="2" group="2"><name>李四</name><sex>女</sex><age>18</age><email>lisi@163.com</email><birthday>1987-06-08</birthday><memo>好學生</memo></student><student id="3" group="3"><name>小王</name><sex>男</sex><age>18</age><email>xiaowang@163.com</email><birthday>1987-06-08</birthday><memo>好學生</memo></student><student id="4" group="4"><name>小張</name><sex>男</sex><age>18</age><email>xiaozhang@163.com</email><birthday>1987-06-08</birthday><memo>好學生</memo></student><student id="5" group="5"><name>小明</name><sex>男</sex><age>18</age><email>xiaoming@163.com</email><birthday>1987-06-08</birthday><memo>好學生</memo></student> </root>Xml對應的實體bean文件:
package com.parsexml.entity;public class Student {private int id;private int group;private String name;private String sex;private int age;private String email;private String memo;private String birthday;public int getId() {return id;}public void setId(int id) {this.id = id;}public int getGroup() {return group;}public void setGroup(int group) {this.group = group;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public String getMemo() {return memo;}public void setMemo(String memo) {this.memo = memo;}public String getBirthday() {return birthday;}public void setBirthday(String birthday) {this.birthday = birthday;}}
Pull解析代碼:
package com.parsexml;import java.io.IOException; import java.util.ArrayList; import java.util.List;import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import org.xmlpull.v1.XmlPullParserFactory;import com.parsexml.entity.Student;public class PullParseXml {public List<Student> PullParseXML(){List<Student> list=null;Student student = null;//構建XmlPullParserFactorytry {XmlPullParserFactory pullParserFactory=XmlPullParserFactory.newInstance();//獲取XmlPullParser的實例XmlPullParser xmlPullParser=pullParserFactory.newPullParser();//設置輸入流 xml文件xmlPullParser.setInput(Thread.currentThread().getContextClassLoader().getResourceAsStream("Student.xml"), "UTF-8");//開始int eventType=xmlPullParser.getEventType();try {while(eventType!=XmlPullParser.END_DOCUMENT){String nodeName=xmlPullParser.getName();switch (eventType) {//文檔開始case XmlPullParser.START_DOCUMENT:list=new ArrayList<Student>();break;//開始節點case XmlPullParser.START_TAG://判斷如果其實節點為studentif("student".equals(nodeName)){//實例化student對象student=new Student();//設置Id屬性student.setId(Integer.parseInt(xmlPullParser.getAttributeValue(0)));//設置Group屬性student.setGroup(Integer.parseInt(xmlPullParser.getAttributeValue(1)));}else if("name".equals(nodeName)){//設置namestudent.setName(xmlPullParser.nextText());}else if("sex".equals(nodeName)){//設置sexstudent.setSex(xmlPullParser.nextText());}else if("age".equals(nodeName)){//設置agestudent.setAge(Integer.parseInt(xmlPullParser.nextText()));}else if("email".equals(nodeName)){//設置emailstudent.setEmail(xmlPullParser.nextText());}else if("birthday".equals(nodeName)){//設置birthdaystudent.setBirthday(xmlPullParser.nextText());}else if("memo".equals(nodeName)){//設置memo屬性student.setMemo(xmlPullParser.nextText());}break;//結束節點case XmlPullParser.END_TAG:if("student".equals(nodeName)){list.add(student);student=null;}break;default:break;}eventType=xmlPullParser.next();}} catch (NumberFormatException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}} catch (XmlPullParserException e) {e.printStackTrace();}return list;}public static void main(String[] args) {List<Student> list=new PullParseXml().PullParseXML();for(Student student: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下?
轉載于:https://www.cnblogs.com/chaoyu/p/6436886.html
總結
以上是生活随笔為你收集整理的Android--使用XMLPull解析xml的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jetty NoSuchFieldErr
- 下一篇: CENTOS 内存释放