http://www.xmlpull.org/ XmlPullParser 是 Android 内置的 XML 解析器, 运行方式与 SAX 解析器相似。它提供了类似的事件,如:开始元素和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件。事件将作为数值代码被发送,因此可以使用一个switch对感兴趣的事件进行处理。当元素开始解析时,调用parser.nextText()方法可以获取下一个Text类型节点的值。



person.xml如下:



[html] ​​ view plain​​ ​​ copy​​

1. person.xml如下:  
2.
3. <?xml version="1.0" encoding="UTF-8"?>
4. <persons>
5. <person id="23">
6. <name>liming</name>
7. <age>30</age>
8. </person>
9. <person id="20">
10. <name>lili</name>
11. <age>25</age>
12. </person>
13. </persons>


在​​Android​​中使用XmlPullParser读写的代码:



[java] ​​ view plain​​ ​​ copy​​


1. //读取public class PullService {
2. public static List<Person> readXML(InputStream inputStream) throws
3. XmlPullParser parser = Xml.newPullParser();
4. try
5. "UTF-8");
6. int
7.
8. null;
9. null;
10. while
11. switch
12. case XmlPullParser.START_DOCUMENT://文档开始事件,可以进行数据初始化处理
13. new
14. break;
15. case XmlPullParser.START_TAG://开始元素事件
16. String name = parser.getName();
17. if (name.equalsIgnoreCase("person")) {
18. new
19. new Integer(parser.getAttributeValue(null, "id")));
20. else if (currentPerson != null) {
21. if (name.equalsIgnoreCase("name")) {
22. // 如果后面是Text节点,即返回它的值
23. else if (name.equalsIgnoreCase("age")) {
24. new
25. }
26. }
27. break;
28. case XmlPullParser.END_TAG://结束元素事件
29. if (parser.getName().equalsIgnoreCase("person") && currentPerson != null) {
30. persons.add(currentPerson);
31. null;
32. }
33. break;
34. }
35. eventType = parser.next();
36. }
37. inputStream.close();
38. return
39. catch
40. e.printStackTrace();
41. }
42. return null;
43. }



[java] ​​ view plain​​ ​​ copy​​


1. //保存
2.
3.
4. public static
5. XmlSerializer serializer = Xml.newSerializer();
6. try
7. serializer.setOutput(writer);
8. "UTF-8", true);
9. //第一个参数为命名空间,如果不使用命名空间,可以设置为null
10. "", "persons");
11. for
12. "", "person");
13. "", "id", person.getId().toString());
14. "", "name");
15. serializer.text(person.getName());
16. "", "name");
17. "", "age");
18. serializer.text(person.getAge().toString());
19. "", "age");
20. "", "person");
21. }
22. "", "persons");
23. serializer.endDocument();
24. return
25. catch
26. e.printStackTrace();
27. }
28. return null;
29. }
30. }