package cn.itcast.service;import java.io.InputStream;import java.io.OutputStream;import java.io.Writer;import java.util.ArrayList;import java.util.List;import org.xmlpull.v1.XmlPullParser;import org.xmlpull.v1.XmlSerializer;import android.util.Xml;import cn.itcast.domain.Person;/** * 采用Pull解析XML内容 */public class PULLPersonService {public static void save(List<Person> persons, Writer writer) throws Throwable{XmlSerializer serializer = Xml.newSerializer();serializer.setOutput(writer);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, "age");serializer.text(person.getAge().toString());serializer.endTag(null, "age");serializer.endTag(null, "person");}serializer.endTag(null, "persons");serializer.endDocument();writer.flush();writer.close();}public static List<Person> getPersons(InputStream inStream) throws Throwable{List<Person> persons = null;Person person = null;XmlPullParser parser = Xml.newPullParser();parser.setInput(inStream, "UTF-8");int eventType = parser.getEventType();//产生第一个事件while(eventType!=XmlPullParser.END_DOCUMENT){//只要不是文档结束事件switch (eventType) {case XmlPullParser.START_DOCUMENT:persons = new ArrayList<Person>();break;case XmlPullParser.START_TAG:String name = parser.getName();//获取解析器当前指向的元素的名称if("person".equals(name)){person = new Person();person.setId(new Integer(parser.getAttributeValue(0)));}if(person!=null){if("name".equals(name)){person.setName(parser.nextText());//获取解析器当前指向元素的下一个文本节点的值}if("age".equals(name)){person.setAge(new Short(parser.nextText()));}}break;case XmlPullParser.END_TAG:if("person".equals(parser.getName())){persons.add(person);person = null;}break;}eventType = parser.next();}return persons;}}

更多相关文章

  1. android manifest.xml中元素含义android
  2. Android ListView CheckBox点击事件
  3. Android 给TextView添加点击事件
  4. Android给TextView添加点击事件的实现方法
  5. angularjs是怎么为ng-click事件传递参数的?
  6. Visual Studio 中自定义生成事件的详细介绍
  7. 总结委托和事件的联系和区别
  8. type=file的change事件只能执行一次的问题及解决方法实例

随机推荐

  1. AndRoid完全退出程序
  2. Android-两种方式实现走马灯效果
  3. android与.NET webservice
  4. 利用Handler定时更新Android(安卓)UI
  5. Android空引用问题的解决方法——on a nu
  6. android引入so文件常见问题
  7. Android的OpenGL学习笔记(5)
  8. Android(安卓)中文 SDK (47) —— Filter
  9. android 中的 Bitmap 相关
  10. android应用去掉title bar