实现XMl文件的序列化与读取

<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 blocke.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 blocke.printStackTrace();}return null;}}

,没有口水与汗水,就没有成功的泪水。

实现XMl文件的序列化与读取

相关文章:

你感兴趣的文章:

标签云: