<persons> <person id="1"> <name>wang1</name> <age>10></age> </person> <person id="2"> <name>wang2</name> <age>11></age> </person> <person id="3"> <name>wang3</name> <age>12></age> </person> <person id="4"> <name>wang4</name> <age>13></age> </person> </persons>
将上面的xml文件队形实例化与解析。
直接写代码:
public class TestCase extends AndroidTestCase { public void test() { // writeToLocal(); List<Person> persons = parserXmlFromLocal(); for (Person person : persons) { Log.i("testcase", person.toString()); } } private void writeToLocal() { List<Person> personlist = getPersonList(); XmlSerializer serializer = Xml.newSerializer(); try { File path = new File(Environment.getExternalStorageDirectory(), "persons.xml"); FileOutputStream fos = new FileOutputStream(path); serializer.setOutput(fos, "utf-8"); serializer.startDocument("utf-8", true); serializer.startTag(null, "persons");// <persons> for (Person person : personlist) { // 开始写人 serializer.startTag(null, "person"); serializer .attribute(null, "id", String.valueOf(person.getId())); // 写名字 serializer.startTag(null, "name"); serializer.text(person.getName()); serializer.endTag(null, "name"); // 写年龄 serializer.startTag(null, "age"); serializer.text(person.getAge() + ""); serializer.endTag(null, "age"); serializer.endTag(null, "person"); } serializer.endTag(null, "persons"); serializer.endDocument(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } private List<Person> getPersonList() { List<Person> persons = new ArrayList<Person>(); for (int i = 0; i < 20; i++) { persons.add(new Person(i, "wang" + i, 10 + i)); } return persons; } private List<Person> parserXmlFromLocal (){ try { File path = new File(Environment.getExternalStorageDirectory(),"persons.xml"); FileInputStream fis = new FileInputStream(path); XmlPullParser parser = Xml.newPullParser(); parser.setInput(fis,"utf-8"); int eventType = parser.getEventType(); List<Person> personlist = null; Person person = null; String id; while (eventType != XmlPullParser.END_DOCUMENT){ String tagName = parser.getName(); switch (eventType) { case XmlPullParser.START_TAG: if("persons".equals(tagName)){ personlist = new ArrayList<Person>(); }else if ("person".equals(tagName)){ person = new Person(); id = parser.getAttributeValue(null,"id"); person.setId(Integer.valueOf(id)); }else if ("name".equals(tagName)){ person.setName(parser.nextText()); }else if ("age".equals(tagName)){ person.setAge(Integer.valueOf(parser.nextText())); } break; case XmlPullParser.END_TAG: if ("person".equals(tagName)){ personlist.add(person); } break; default: break; } eventType = parser.next(); } return personlist; } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } }