--> pull解析器是android內置的解析器,解析原理與sax類似
--> xml文件student.xml:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!-- 有三個學生:姓名、年齡、性別。把這三個學生的信息用xml表示出來 --> 3 <students> 4 <student name="zhangsan"> 5 <age>18</age> 6 <sex>男</sex> 7 </student> 8 <student name="lisi"> 9 <age>22</age> 10 <sex>女</sex> 11 </student> 12 <student name="wangwu"> 13 <age>20</age> 14 <sex>男</sex> 15 </student> 16 </students>
--> Student 類:

--> Test 測試類:
1 package com.dragon.java.pullparse;
2
3 import static org.xmlpull.v1.XmlPullParser.END_DOCUMENT;
4 import static org.xmlpull.v1.XmlPullParser.END_TAG;
5 import static org.xmlpull.v1.XmlPullParser.START_TAG;
6 import static org.xmlpull.v1.XmlPullParser.TEXT;
7
8 import java.io.FileReader;
9 import java.io.IOException;
10 import java.util.ArrayList;
11 import java.util.List;
12
13 import org.xmlpull.v1.XmlPullParser;
14 import org.xmlpull.v1.XmlPullParserException;
15 import org.xmlpull.v1.XmlPullParserFactory;
16
17 /*
18 * pull解析器
19 */
20 public class Test {
21 public static void main(String[] args) throws XmlPullParserException,
22 IOException {
23 List<Student> list = null;
24 Student student = null;
25 // 1、獲取一個XmlPullParser解析器
26 XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); // 調用解析器工廠的靜態方法,創建一個解析器工廠
27 XmlPullParser parser = factory.newPullParser(); // 創建一個pull解析器
28 parser.setInput(new FileReader(
29 "D:/workspace/08-25/src/com/dragon/java/xml/students.xml")); // 設置一個輸入流,告訴要解析的xml數據的來源
30 int event = parser.getEventType(); // 獲取當前事件的類型
31 while (event != END_DOCUMENT) { // 當碰到文檔結束的時候,結束循環
32 switch (event) {
33 case START_TAG:
34 String tag = parser.getName();
35 if (tag.equals("students")) {
36 list = new ArrayList<>();
37 } else if (tag.equals("student")) {
38 student = new Student();
39 student.setName(parser.getAttributeValue(null, "name")); // 參數1:是命名空間,如果命名空間,則傳入null。參數2:屬性的名字
40 list.add(student);
41 } else if (tag.equals("age")) {
42 student.setAge(Integer.parseInt(parser.nextText())); // 獲取當前事件後面的text事件,text的值
43 } else if (tag.equals("sex")) {
44 student.setSex(parser.nextText());
45 }
46 break;
47 case END_TAG:
48 break;
49 case TEXT:
50 break;
51 default:
52 break;
53 }
54 event = parser.next();
55 }
56 for (Student student2 : list) {
57 System.out.println(student2);
58 }
59 }
60 }
--> 也是蠻麻煩的...