采用Pull解析器处理XML数据
1、person.xml
<?xml version="1.0" encoding="UTF-8"?> <persons> <person id="001"> <name>张三</name> <sex>男</sex> <age>23</age> </person> <person id="002"> <name>梅超风</name> <sex>女</sex> <age>22</age> </person> </persons>
2、PersonService.java
package com.webyun.app.service; import java.io.InputStream; import java.io.OutputStream; import java.util.ArrayList; import java.util.List; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlSerializer; import android.util.Xml; import com.webyun.app.domain.Person; public class PersonService { /** * 获取数据 * @param inputStream * @return * @throws Exception */ public static List<Person> getPersons(InputStream inputStream) throws Exception { List<Person> persons = null; Person person = null; //通过Android帮助类获取Pull解析器 XmlPullParser pullParser = Xml.newPullParser(); //为Pull解析器设置需要解析的XML数据 pullParser.setInput(inputStream, "UTF-8"); int eventType = pullParser.getEventType(); while(eventType != XmlPullParser.END_DOCUMENT){ switch(eventType){ case XmlPullParser.START_DOCUMENT: persons = new ArrayList<Person>(); break; case XmlPullParser.START_TAG: if("person".equals(pullParser.getName())){ person = new Person(); String id = pullParser.getAttributeValue(0); person.setId(id); } if("name".equals(pullParser.getName())){ String name = pullParser.nextText(); person.setName(name); } if("sex".equals(pullParser.getName())){ String sex = pullParser.nextText(); person.setSex(sex); } if("age".equals(pullParser.getName())){ int age = new Integer(pullParser.nextText()); person.setAge(age); } break; case XmlPullParser.END_TAG: if("person".equals(pullParser.getName())){ persons.add(person); person = null; } break; } eventType = pullParser.next(); } return persons; } /** * 保存数据 * @param persons 数据 * @param os 输出方向 * @throws Exception */ public static void save(List<Person> persons, OutputStream os) throws Exception { XmlSerializer serializer = Xml.newSerializer(); serializer.setOutput(os, "UTF-8"); //开始文档 serializer.startDocument("UTF-8", true); serializer.startTag(null, "persons"); for(Person person : persons){ serializer.startTag(null, "person"); serializer.attribute(null, "id", person.getId().toString()); serializer.startTag(null, "name"); serializer.text(person.getName()); serializer.endTag(null, "name"); serializer.startTag(null, "sex"); serializer.text(person.getSex()); serializer.endTag(null, "sex"); serializer.startTag(null, "age"); serializer.text(person.getAge().toString()); serializer.endTag(null, "age"); serializer.endTag(null, "person"); } serializer.endTag(null, "persons"); //结束文档 serializer.endDocument(); os.flush(); os.close(); } }
3、PersonServiceTest.java
package com.webyun.app.test; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import android.test.AndroidTestCase; import android.util.Log; import com.webyun.app.domain.Person; import com.webyun.app.service.PersonService; public class PersonServiceTest extends AndroidTestCase { private static final String TAG = "PersonServiceTest"; public void testPersons() throws Exception { InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("person.xml"); List<Person> persons = PersonService.getPersons(inputStream); for(Person person :persons){ Log.i(TAG, person.toString()); } } public void testSave() throws Exception { List<Person> persons = new ArrayList<Person>(); persons.add(new Person("003","李四","男",25)); persons.add(new Person("004","大雄","男",22)); persons.add(new Person("005","豆豆","女",20)); PersonService.save(persons, System.out); } }
相关推荐
与卿画眉共浮生 2020-10-14
xiyang 2020-08-21
baijinswpu 2020-07-29
leonranri 2020-07-26
zhongliwen 2020-07-05
麋鹿麋鹿迷了路 2020-07-05
zengyu00 2020-07-05
XGQ 2020-07-04
CoderBoy 2020-06-28
whbing 2020-06-28
绝望的乐园 2020-06-27
wellfly 2020-06-26
菇星獨行 2020-06-25
草原孤狼 2020-06-25
坚持着执着 2020-06-16
wcqwcq 2020-06-14
yuanye0 2020-06-14
zhongliwen 2020-06-13
MrFuWen 2020-06-09