XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); // 创建解析器。 XmlPullParser parser = factory.newPullParser(); //FileInputStream fis = new FileInputStream("f:\students.xml"); parser.setInput(new FileReader("f:\students.xml")); int type = parser.getEventType();// 得到事件常量。 System.out.println(type); String tag; List<Student> list = null; Student stu = null; while (type != XmlPullParser.END_DOCUMENT) { // 得到标记名称。 tag = parser.getName(); switch (type) { case XmlPullParser.START_DOCUMENT: System.out.println("文档开始解析"); list = new ArrayList<Student>(); break; case XmlPullParser.START_TAG:// 开始标记 if ("student".equals(tag)) { stu = new Student(); //查看开始标记的属性名称和属性值。再进行判断。 /* for(int i=0;i<parser.getAttributeCount();i++){ String name = parser.getAttributeName(i); String value = parser.getAttributeValue(i); //再进行判断。 }*/ } else if ("id".equals(tag)) { // 得到标记之间的内容。 String str = parser.nextText(); System.out.println(tag + ":" + str); stu.id = Integer.parseInt(str); } else if ("name".equals(tag)) { stu.name = parser.nextText(); } else if ("age".equals(tag)) { String str = parser.nextText(); System.out.println(tag + ":" + str); stu.age = Integer.parseInt(str); } break; case XmlPullParser.END_TAG:// 结束标记 if ("student".equals(tag)) { list.add(stu); } break; default: break; } //跳到下一个标记,得到事件常量。 type = parser.next(); } //遍历集合 for(Student s:list){ System.out.println(s); }