編輯:關於android開發
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 args
15 * @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 args
12 * @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 id
18 */
19 public String getId() {
20 return id;
21 }
22 /**
23 * @param id the id to set
24 */
25 public void setId(String id) {
26 this.id = id;
27 }
28 /**
29 * @return the name
30 */
31 public String getName() {
32 return name;
33 }
34 /**
35 * @param name the name to set
36 */
37 public void setName(String name) {
38 this.name = name;
39 }
40 /**
41 * @return the age
42 */
43 public int getAge() {
44 return age;
45 }
46 /**
47 * @param age the age to set
48 */
49 public void setAge(int age) {
50 this.age = age;
51 }
52 /* (non-Javadoc)
53 * @see java.lang.Object#toString()
54 */
55 @Override
56 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
初識genymotion安裝遇上的VirtualBox問題,genymotionvirtualbox
初識genymotion安裝遇上的VirtualBox問題,genymotionvirtualbox 想必做過Android開發的
Android Studio Gradle Build Running 特別慢的問題探討,androidgradle
Android Studio Gradle Build Running 特別慢的問題探討,androidgradle本文的本本win7 64bit 6G android
Android Studio導入github下載的project和module,androidgithub
Android Studio導入github下載的project和module,androidgithub前言:我們以前eclispe時代, 經常都是跑到github浏覽
android:QQ多種側滑菜單的實現
android:QQ多種側滑菜單的實現 然而這個菜單效果只是普通的側拉效果 我們還可以實現抽屜式側滑菜單 就像這樣 第一種效果 第二種效果 第三種效果 第四種效果 其