pull解析器: 還原序列化與序列化,pull序列化

來源:互聯網
上載者:User

pull解析器: 還原序列化與序列化,pull序列化

 

  pull解析器:還原序列化  讀取xml檔案來擷取一個對象的資料

 

 1 import java.io.FileInputStream; 2 import java.io.IOException; 3 import java.util.ArrayList; 4 import java.util.List; 5  6 import org.xmlpull.v1.XmlPullParser; 7 import org.xmlpull.v1.XmlPullParserException; 8 import org.xmlpull.v1.XmlPullParserFactory; 9 10 public class ReadXmlTest {11 12     /**13      *   pull解析器:還原序列化     讀取xml檔案來擷取一個對象的資料14      * @param args15      * @throws XmlPullParserException 16      * @throws IOException 17      */18     public static void main(String[] args) throws XmlPullParserException, IOException {19 20         //1.導包21         //2.擷取解析器工廠22         XmlPullParserFactory factory = XmlPullParserFactory.newInstance();23         //3.根據工廠擷取解析器對象24         XmlPullParser parser = factory.newPullParser();25         //4.設定輸入資料流26         parser.setInput(new FileInputStream("src/student.xml"),"utf-8");27         //5.解析28         List<Student> list = null;29         Student stu = null;30         //擷取對應時間的類型31         int type = parser.getEventType(); 32         while(type != XmlPullParser.END_DOCUMENT){33             //擷取標籤名稱34             String tagname = parser.getName();35             switch(type){36             case XmlPullParser.START_TAG:37                 //判斷標籤名稱38                 if("students".equals(tagname)){39                     //建立集合40                     list = new ArrayList<Student>();41                 }else if("student".equals(tagname)){42                     //建立對象43                     stu = new Student();44                     //擷取ID屬性值45                     String id = parser.getAttributeValue(0);46                     //賦值47                     stu.setId(id);48                 }else if("name".equals(tagname)){49                     //擷取標籤體的文本50                     String name = parser.nextText();51                     //賦值52                     stu.setName(name);53                 }else if("age".equals(tagname)){54                     //擷取標籤體的文本55                     String age = parser.nextText();56                     //賦值57                     stu.setAge(Integer.parseInt(age));58             }59                 break;60             case XmlPullParser.END_TAG:61                 if("student".equals(tagname)){62                     //將對象添加到集合中63                     list.add(stu);64                     stu = null;65                 }66                 break;67             default:68                 break;69             }70         //向下走一步71         parser.next();72         //重新賦值73         type = parser.getEventType();74         }75         //6.輸出76         System.out.println(list);77     }78 }

 

------------------------------------------------------------------------------------------------

 

  pull解析器:序列化    將一個對象的資料  寫入到xml檔案中

 

 1 import java.io.FileOutputStream; 2 import java.io.IOException; 3  4 import org.xmlpull.v1.XmlPullParserException; 5 import org.xmlpull.v1.XmlPullParserFactory; 6 import org.xmlpull.v1.XmlSerializer; 7  8 public class WriteXmlTest { 9 10     /**pull解析器:序列化   將一個對象的資料  寫入到xml檔案中11      * @param args12      * @throws XmlPullParserException 13      * @throws IOException 14      */15     public static void main(String[] args) throws XmlPullParserException, IOException {16 17         Student stu = new Student("s_001", "小飛飛", 23);18         //1.導包19         //2.擷取解析器工廠20         XmlPullParserFactory factory = XmlPullParserFactory.newInstance();21         //3.根據工廠擷取解析器對象22         XmlSerializer serializer = factory.newSerializer();23         //4.設定輸出資料流24         serializer.setOutput(new FileOutputStream("src/sss.xml"),"utf-8");25         //5.寫入26         //5.1寫文檔聲明  參數1:encoding屬性值,參數2:standalone屬性值27         serializer.startDocument("utf-8", true);28         //5.2寫入開始跟標籤29         serializer.startTag(null, "students");30         for(int i=0; i <5; i++){31             //5.3寫入student標籤32             serializer.startTag(null, "student");33             34             serializer.attribute(null, "id", stu.getId());35             36             serializer.startTag(null, "name");37             serializer.text(stu.getName());38             serializer.endTag(null, "name");39             40             serializer.startTag(null, "age");41             serializer.text(String.valueOf(stu.getAge()));42             serializer.endTag(null, "age");43             44             serializer.endTag(null, "student");45         }46         //5.4寫入結束標籤47         serializer.endTag(null, "students");48         //5.5寫入結束文檔49         serializer.endDocument();50         //反應結果51         System.out.println("寫入完成,請去查看!");52     }53 }

 

  Student類

 

 1 public class Student { 2  3     private String id; 4     private String name; 5     private int age; 6      7     public Student() { 8         super(); 9     }10     public Student(String id, String name, int age) {11         super();12         this.id = id;13         this.name = name;14         this.age = age;15     }16     /**17      * @return the id18      */19     public String getId() {20         return id;21     }22     /**23      * @param id the id to set24      */25     public void setId(String id) {26         this.id = id;27     }28     /**29      * @return the name30      */31     public String getName() {32         return name;33     }34     /**35      * @param name the name to set36      */37     public void setName(String name) {38         this.name = name;39     }40     /**41      * @return the age42      */43     public int getAge() {44         return age;45     }46     /**47      * @param age the age to set48      */49     public void setAge(int age) {50         this.age = age;51     }52     /* (non-Javadoc)53      * @see java.lang.Object#toString()54      */55     @Override56     public String toString() {57         return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";58     }59 60 }

 

  student.xml

 1 <?xml version='1.0' encoding='utf-8' ?> 2  3 <students> 4     <student id='s001'> 5         <name>zhangsan</name> 6         <age>23</age> 7     </student> 8          9     <student id="s002">10         <name>lisi</name>11         <age>24</age>12     </student>13 14     <student id="s003">15         <name>王五</name>16         <age>25</age>17     </student>18     19 </students>

 

匯入的包名稱(pull解析器jar包):

  kxml2-2.3.0.jar

  xmlpull_1_1_3_4c.jar

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.