向xmlDemo.xml文件中序列化:
private void writeToLocal() {
List<Person> persons = getPersonList();
XmlSerializer xmlSerializer = Xml.newSerializer();
try {
File path = new File(Environment.getExternalStorageDirectory(),
"xmlDemo.xml");
FileOutputStream fos = new FileOutputStream(path);
xmlSerializer.setOutput(fos, "utf-8");
xmlSerializer.startDocument("utf-8", true);
xmlSerializer.startTag(null, "persons");
for (Person person : persons) {
xmlSerializer.startTag(null, "person");
xmlSerializer.attribute(null, "id",
String.valueOf(person.getId()));
xmlSerializer.startTag(null, "name");
xmlSerializer.text(person.getName());
xmlSerializer.endTag(null, "name");
xmlSerializer.startTag(null, "sex");
xmlSerializer.text(person.getSex());
xmlSerializer.endTag(null, "sex");
xmlSerializer.endTag(null, "person");
}
xmlSerializer.endTag(null, "persons");
xmlSerializer.endDocument();
} catch (Exception e) {
e.printStackTrace();
}
}
解析xmlDemo.xml文件:
private List<Person> parseXmlFromLocal() {
XmlPullParser pullParser = Xml.newPullParser();
try {
File path = new File(Environment.getExternalStorageDirectory(),
"xmlDemo.xml");
FileInputStream fis = new FileInputStream(path);
pullParser.setInput(fis, "utf-8");
int eventType = pullParser.getEventType();
List<Person> persons = null;
Person person = null;
String id;
while (eventType != XmlPullParser.END_DOCUMENT) {
String tagName = pullParser.getName();
switch (eventType) {
case XmlPullParser.START_TAG:
if ("persons".equals(tagName)) {
persons = new ArrayList<Person>();
} else if ("person".equals(tagName)) {
person = new Person();
id = pullParser.getAttributeValue(null, "id");
person.setId(Integer.valueOf(id));
} else if ("name".equals(tagName)) {
person.setName(pullParser.nextText());
} else if ("sex".equals(tagName)) {
person.setSex(pullParser.nextText());
}
break;
case XmlPullParser.END_TAG:
if ("person".equals(tagName)) {
persons.add(person);
}
default:
break;
}
eventType = pullParser.next();
}
return persons;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}