1. package com.cn.service; 2. 3. import java.io.IOException; 4. import java.io.InputStream; 5. import java.io.OutputStream; 6. import java.util.ArrayList; 7. import java.util.List; 8. 9. import org.xmlpull.v1.XmlPullParser; 10. import org.xmlpull.v1.XmlSerializer; 11. 12. import android.util.Xml; 13. 14. import com.cn.domain.Persion; 15. /**** 16. * 采用Pull解析XML 17. * 18. * ****/ 19. public class PULLPersionService { 20. 21. public static List<Persion> getPersino(InputStream is)throws Exception{ 22. List<Persion> list = null; 23. Persion persion = null; 24. XmlPullParser parser = Xml.newPullParser(); 25. parser.setInput(is, "UTF-8"); 26. int event = parser.getEventType(); 27. while(event != XmlPullParser.END_DOCUMENT){ 28. switch (event){ 29. case XmlPullParser.START_DOCUMENT: 30. list = new ArrayList<Persion>(); 31. break; 32. case XmlPullParser.START_TAG: 33. if("person".equals(parser.getName())){//得到指针所指向的节点名称 34. int id = Integer.parseInt(parser.getAttributeValue(0)); 35. persion = new Persion(); 36. persion.setId(id); 37. } 38. if(persion != null){ 39. if("name".equals(parser.getName())){ 40. String name = parser.nextText(); 41. persion.setName(name); 42. }else if("age".equals(parser.getName())){ 43. String age = parser.nextText(); 44. persion.setName(age); 45. } 46. } 47. break; 48. case XmlPullParser.END_TAG: 49. if("person".equals(parser.getName())){ 50. list.add(persion); 51. persion = null; 52. } 53. break; 54. default: 55. break; 56. } 57. } 58. event = parser.next(); 59. return list; 60. } 61. 62. public static void save(List<Persion> list,OutputStream os) throws IllegalArgumentException, IllegalStateException, IOException{ 63. XmlSerializer serializer = Xml.newSerializer(); 64. serializer.setOutput(os, "UTF-8"); 65. serializer.startDocument("UTF-8", true); 66. serializer.startTag(null, "persons"); 67. for(Persion persion : list){ 68. serializer.startTag(null, "person"); 69. serializer.attribute(null, "id", String.valueOf(persion.getId())); 70. serializer.startTag(null, "name"); 71. serializer.text(persion.getName()); 72. serializer.endTag(null, "name"); 73. 74. serializer.startTag(null, "age"); 75. serializer.text(String.valueOf(persion.getAge())); 76. serializer.endTag(null, "age"); 77. serializer.endTag(null, "person"); 78. } 79. serializer.endTag(null, "persons"); 80. serializer.endDocument(); 81. os.flush(); 82. os.close(); 83. } 84. }