/** * 采用Pull解析XML内容 */
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.android.mldn.domain.Person;
public class PULLPersonService { public static void save (List<Person> persons,OutputStream outStream) throws Throwable{ //创建一个序列化实例 XmlSerializer serializer = Xml.newSerializer(); //设置输出流 serializer.setOutput(outStream, "UTF-8"); //开始文档 serializer.startDocument("UTF-8", true); //开始元素 serializer.startTag(null, "persons"); for (Person person : persons) { //person 元素节点 serializer.startTag(null, "person"); //设置属性 serializer.attribute(null, "id", person.getId().toString()); //name 元素节点 开始 serializer.startTag(null, "name"); //设置文本节点属性 serializer.text(person.getName()); //name 元素节点 结束 serializer.endTag(null, "name"); serializer.startTag(null, "age"); serializer.text(person.getAge().toString()); serializer.endTag(null, "age"); //person 元素节点 结束 serializer.endTag(null, "person"); } //结束元素 serializer.endTag(null, "persons"); //结束文档 serializer.endDocument(); outStream.flush(); outStream.close(); } public static List<Person> getPersons(InputStream inStream) throws Throwable{ List<Person> persons = null; Person person = null; //创建Pull 解析器实例 XmlPullParser parser = Xml.newPullParser(); //读取xml 文件数据 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; } //指向下一个 START_DOCUMENT eventType = parser.next(); } return persons; } }

更多相关文章

  1. Android转场动画和共享元素动画兼容5.0以下版本的实现
  2. Android 上层应用读写底层设备节点(Android M)
  3. 1.8 奇葩,android onBackPressed结束了两个activity
  4. LinearLayout子元素设置layout_weight注意的问题
  5. Android 背景透明度设置和设置GridView元素间距
  6. Android 框架之创建设备节点文件
  7. Android中如何解析网页,获取网页中的元素内容

随机推荐

  1. Android的快速开发框架 afinal
  2. Android中EditText 设置 imeOptions 无效
  3. Android基本组件__文本框和编辑框
  4. 在 Android(安卓)上使用 XML
  5. Android(安卓)AsyncTask
  6. android一个项目应用另外一个项目和jar包
  7. Android菜鸟之路-多线程下载
  8. Android(安卓)编码规范
  9. Android画图之Matrix(二)
  10. android中九宫格布局的实现