Android 学习之pull解析Xml
一、 PUll解析Xml
public static List<Person> xmlParser(InputStream xml) throws Exception { List<Person> persons=null; Person p=null; XmlPullParser parser=Xml.newPullParser(); parser.setInput(xml, "UTF-8"); int event=parser.getEventType(); while(event!=XmlPullParser.END_DOCUMENT) { switch (event) { case XmlPullParser.START_DOCUMENT: persons=new ArrayList<Person>(); break; case XmlPullParser.START_TAG: if (parser.getName().equals("person")) { p=new Person(); p.setId(Integer.parseInt(parser.getAttributeValue(0))); } if (parser.getName().equals("name")) { p.setName(parser.nextText()); } if(parser.getName().equals("age")) { p.setAge(Integer.parseInt(parser.nextText())); } break; case XmlPullParser.END_TAG: if (parser.getName().equals("person")) { persons.add(p); p=null; } break; } event=parser.next(); } return persons; }
二、以Xml格式保存信息
public static void saveAsXml(List<Person> persons,OutputStream os)throws Exception { XmlSerializer xmlSerial= Xml.newSerializer(); xmlSerial.setOutput(os, "UTF-8"); xmlSerial.startDocument("UTF-8", true); xmlSerial.startTag(null, "persons"); for(Person person : persons) { xmlSerial.startTag(null, "person"); xmlSerial.attribute(null, "id",String.valueOf(person.getId())); xmlSerial.startTag(null, "name"); xmlSerial.text(person.getName()); xmlSerial.endTag(null, "name"); xmlSerial.startTag(null, "age"); xmlSerial.text(String.valueOf(person.getAge())); xmlSerial.endTag(null, "age"); xmlSerial.endTag(null, "person"); } xmlSerial.endTag(null, "persons"); xmlSerial.endDocument(); os.flush(); os.close(); }