Android 學習心得(1)——pull解析器

來源:互聯網
上載者:User

標籤:

  Android核心使用pull解析器  所以不用匯入jar包,pull解析器簡單、易用、接近於手工編寫XML檔案

  解析的XML檔案為xmlpull.xml

  

 1 <?xml version="1.0" encoding="utf-8"?> 2 <students> 3     <student id="1"> 4         <name>張MM</name> 5         <gender>女</gender> 6         <age>18</age> 7     </student> 8     <student id="2"> 9         <name>王GG</name>10         <gender>男</gender>11         <age>20</age>12     </student>13 </students>

  實體類student.java

 1 public class student { 2     private Integer id; 3     private String name; 4     private String gender; 5     private Integer age; 6     public Integer getId() { 7         return id; 8     } 9     public void setId(Integer id) {10         this.id = id;11     }12     public String getName() {13         return name;14     }15     public void setName(String name) {16         this.name = name;17     }18     public String getGender() {19         return gender;20     }21     public void setGender(String gender) {22         this.gender = gender;23     }24     public Integer getAge() {25         return age;26     }27     public void setAge(Integer age) {28         this.age = age;29     }30     31 }

 

 

 

 解析xml的讀寫方法xmlService.java

 1 package com.bwl.service; 2  3 import java.io.InputStream; 4 import java.util.ArrayList; 5 import java.util.List; 6  7 import org.xmlpull.v1.XmlPullParser; 8 import org.xmlpull.v1.XmlSerializer; 9 10 import com.bwl.pojo.student;11 12 import android.util.Xml;13 14 public class xmlService {15 16     public List<student> read(InputStream xml) throws Exception {17         List<student> list = null;18         student student = null;19         XmlPullParser xmlPull = Xml.newPullParser();20         xmlPull.setInput(xml, "UTF-8");// 設定解析值 ("路徑","編碼")21         int flag = xmlPull.getEventType();// 取得當前所指向的資料的事件類型22         do {23             switch (flag) {24             case XmlPullParser.START_DOCUMENT:// xml文檔開始節點 start document25                 // 集合執行個體化26                 list = new ArrayList<student>();27                 break;28             case XmlPullParser.START_TAG:// xml文檔開始節點解析29                 if ((xmlPull.getName()).equals("student")) {// 和節點內容進行比較30                     int id = new Integer(xmlPull.getAttributeValue(0));// 擷取節點的第一個屬性值31                     student = new student();32                     student.setId(id);33                 }34                 if ((xmlPull.getName()).equals("name")) {35                     String name=xmlPull.nextText();// 取得節點的下一個Text節點36                     student.setName(name);37                 }38                 if ((xmlPull.getName()).equals("gender")) {39                     String gender=xmlPull.nextText();40                     student.setGender(gender);41                 }42                 if ((xmlPull.getName()).equals("age")) {43                     int age=new Integer(xmlPull.nextText());44                     student.setAge(age);45                 }46                 break;47             case XmlPullParser.END_TAG:// xml結束節點 end document48                 if (xmlPull.getName().equals("student")) {// 節點結束判斷49                     list.add(student);// student添加到list集合中50                     student = null;// student置為空白51                 }52                 break;53             }54             flag = xmlPull.next();// 指向下一個節點55         } while (flag != XmlPullParser.END_DOCUMENT); // 執行到END DOCUMENT節點文檔結束56         xml.close();57         return list;58     }59 60     public void write(List<student> list) throws Exception {61         XmlSerializer xmlSerializer = Xml.newSerializer();62         if (list != null) {63             xmlSerializer.startDocument("UTF-8", true);//添加statrt docunment事件64             xmlSerializer.startTag("", "students");//添加節點,參數(命名空間,節點名稱)不使用命名空間的話可以使用""代替65             for (student student : list) {66                 xmlSerializer.setProperty("", "student");67                 xmlSerializer.attribute("", "id", student.getId().toString());//定義student節點胡屬性參數:(命名空間,屬性名稱,屬性值)68                 xmlSerializer.setProperty("", "name");69                 xmlSerializer.text(student.getName());70                 xmlSerializer.endTag("", "student");//節點結束標記71                 xmlSerializer.setProperty("", "gender");72                 xmlSerializer.text(student.getGender());73                 xmlSerializer.endTag("", "gender");74                 xmlSerializer.setProperty("", "age");75                 xmlSerializer.text(student.getAge().toString());76                 xmlSerializer.endTag("", "age");77                 xmlSerializer.endTag("", "student");78             }79             xmlSerializer.endDocument();//添加END DOCUMENT事件80 81         }82     }83 84 }

 

  

 

Android 學習心得(1)——pull解析器

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.