5 public static void save(List<Person> persons, OutputStream outputStream)
26 throws Throwable {
27 XmlSerializer serializer = Xml.newSerializer();
28 serializer.setOutput(outputStream, "UTF-8");
29 serializer.startDocument("UTF-8", true);
30 serializer.startTag(null, "persons");
31 for (Person person : persons) {
32 serializer.startTag(null, "person");
33 serializer.attribute(null, "id", person.getId().toString());
34
35 serializer.startTag(null, "name");
36 serializer.text(person.getName());
37 serializer.endTag(null, "name");
38
39 serializer.startTag(null, "age");
40 serializer.text(person.getAge().toString());
41 serializer.endTag(null, "age");
42
43 serializer.endTag(null, "person");
44 }
45
46 serializer.endTag(null, "persons");
47 serializer.endDocument();
48 outputStream.flush();
49 outputStream.close();
50 }
51
52 /**
53 * 采用Pull解析器生成XML内容,使用Writer
54 * @param persons
55 * @param writer
56 * @throws Throwable
57 */
58 public static void saveWrite(List<Person> persons, Writer writer)
59 throws Throwable {
60 XmlSerializer serializer = Xml.newSerializer();
61 serializer.setOutput(writer);
62 serializer.startDocument("UTF-8", true);
63 serializer.startTag(null, "persons");
64 for (Person person : persons) {
65 serializer.startTag(null, "person");
66 serializer.attribute(null, "id", person.getId().toString());
67
68 serializer.startTag(null, "name");
69 serializer.text(person.getName());
70 serializer.endTag(null, "name");
71
72 serializer.startTag(null, "age");
73 serializer.text(person.getAge().toString());
74 serializer.endTag(null, "age");
75
76 serializer.endTag(null, "person");
77 }
78
79 serializer.endTag(null, "persons");
80 serializer.endDocument();
81 writer.flush();
82 writer.close();
83 }
84
85 /**
86 * 采用Pull解析器解析XML内容
87 *
88 * @param inStream
89 * @return
90 * @throws Throwable
91 */
92 public List<Person> getHongXml(InputStream inStream) throws Throwable {
93 List<Person> persons = null;
94 Person person = null;
95 XmlPullParser parser = Xml.newPullParser();
96 parser.setInput(inStream, "UTF-8");
97 int eventType = parser.getEventType();// 产生第一个事件
98 while (eventType != XmlPullParser.END_DOCUMENT) {// 只要不是文档事件就一直循环
99 switch (eventType) {
100 case XmlPullParser.START_DOCUMENT:
101 persons = new ArrayList<Person>();
102 break;
103 case XmlPullParser.START_TAG:
104 String name = parser.getName();// 获得解析器当前指向的元素的名称
105 if ("person".equals(name)) {
106 person = new Person();
107 person.setId(Integer.valueOf(parser.getAttributeva lue(0)));
108 } else if (person != null) {
109 if ("name".equals(name)) {
110 person.setName(parser.nextText());// 获取解析器当前元素的下一个文本节点的值
111 } else if ("age".equals(name)) {
112 person.setAge(Short.valueOf(parser.nextText()));
113 }
114 }
115 break;
116 case XmlPullParser.END_TAG:
117 if ("person".equals(parser.getName())) {
118 persons.add(person);
119 person = null;
120 }
121 break;
122 }
123
124 eventType = parser.next();
125 }
126 ret |