通过pull解析器操作安卓的xml

例子定义了一个javabean用于存放上面解析出来的xml内容, 这个javabean为Person,代码请见本页下面备注:

==============================================================================================

使用pull解析器解析person.xml文件

public class PersonService {
 
 public static List getPersons(InputStream xml) throws Exception{  //接收一个xml文件对象
  List persons = null;
  Person person = null;
  XmlPullParser parser = Xml.newPullParser();    //利用Android的Xml工具类获取xmlPull解析器
  parser.setInput(xml, "UTF-8");                 //解析文件,设置字符集
  int event = parser.getEventType();             //获取解析状态,返回的是int型数字状态
  while(event != XmlPullParser.END_DOCUMENT){    //如果状态不是结束事件END_DOCUMENT,就递归
   switch (event) {
   case XmlPullParser.START_DOCUMENT:     //如果为开始解析头标签START_DOCUMENT,初始化数据
    persons = new ArrayList();
    break;
    
   case XmlPullParser.START_TAG:         //如果为开始解析属性START_TAG,则获取数据
    if("person".equals(parser.getName())){    //如果属性名为制定名称则根据属性索引值获取数据
     Integer personid = new Integer(parser.getAttributeValue(0));
     person = new Person();    //创建对象封装属性
     person.setId(personid);
    }else if("name".equals(parser.getName())){   
     person.setName(parser.nextText());    //如果要获取的数据在text中则调用nextText()方法获取
    }else if("age".equals(parser.getName())){
     person.setAge(new Short(parser.nextText()));
    }
    break;
   case XmlPullParser.END_TAG:    //当触发xml文档结束事件的名称为person(即解析结束位置),将封装对象放入集合,再将对象制空
    if("person".equals(parser.getName())){
     persons.add(person);
     person = null;
    }
    break;
   }
   event = parser.next();   //让指针指向下一个节点
  }
  return persons;
 }

*************************************************************************

通过pull接续器创建xml文档

public static void save(List persons, OutputStream outStream) throws Exception{
  XmlSerializer serializer = Xml.newSerializer();  //创建xml的序列化文件
  serializer.setOutput(outStream, "UTF-8");        //传入保存的输出流,和字符集编码
  serializer.startDocument("UTF-8", true);         //xml头标签字符集设置,是否序列化
  serializer.startTag(null, "persons");            //开始节点设置,(命名空间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();              //结束xml编辑,即设置xml文档结尾
  outStream.flush();                    //最好先将缓存中数据刷出再关闭输出流以防传入的流是缓存流
  outStream.close();
 }
}

通过pull解析器操作安卓的xml的更多相关文章

  1. 无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)

    1.android下junit测试框架配置 单元测试需要在手机中进行安装测试 (1).在清单文件中manifest节点下配置如下节点 <instrumentation android:name= ...

  2. 安卓使用pull解析器解析XML文件

    学习一下: public class MainActivity extends Activity { List<City> cityList; @Override protected vo ...

  3. Android(java)学习笔记187:Android中操作XML数据(使用Pull解析器)

    1. Pull解析器的运行方式与 SAX 解析器相似.它提供了类似的事件,如:开始元素和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件.跟SAX不同的是, Pull解析器 ...

  4. Android(java)学习笔记130:Android中操作XML数据(使用Pull解析器)

    1. Pull解析器的运行方式与 SAX 解析器相似.它提供了类似的事件,如:开始元素和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件.跟SAX不同的是, Pull解析器 ...

  5. 15_采用Pull解析器解析和生成XML内容

    java还提供SAX和DOM用于解析XML Android还集成了Pull解析器——推荐 package cn.itcast.service; import java.io.InputStream; ...

  6. 使用Pull解析器生成XML文件和读取xml文件

    有些时候,我们需要生成一个XML文件,生成XML文件的方法有很多,如:可以只使用一个StringBuilder组拼XML内容,然后把内容写入到文件中:或者使用DOM API生成XML文件,或者也可以使 ...

  7. 用PULL解析器解析XML文件

    第一种方式(简洁,直接用pullparser.nextText()来返回下一个String类型的值): 1 package lee.service; 2 3 import java.io.InputS ...

  8. Android开发8——利用pull解析器读写XML文件

    一.基本介绍 对XML解析有SAX和DOM等多种方式,Android中极力推荐xmlpull方式解析xml.xmlpull不仅可用在Android上同样也适用于javase,但在javase环境中需自 ...

  9. 使用Pull解析器生成XML文件

    有些时候,我们需要生成一个XML文件,生成XML文件的方法有很多,如:可以只使用一个StringBuilder组拼XML内容,然后把内容写入到文件中:或者使用DOM API生成XML文件,或者也可以使 ...

随机推荐

  1. TED Talk-教育如何扼杀创造力

    TED上面有个"11个必须看的TED演讲"的播放列表,"教育扼杀创新"是其中一个.下面贴的是演讲的中文翻译. 早上好. 前面的演讲都很好,对不对? 我已经完全被 ...

  2. C# base和this[转]

    new关键字引起了大家的不少关注,尤其感谢Anders Liu的补充,让我感觉博客园赋予的交流平台真的无所不在.所以,我们就有必要继续这个话题,把我认为最值得关注的关键字开展下去,本文的重点是访问关键 ...

  3. 最受欢迎的8位Java大师

    面是8位Java牛人,他们为Java社区编写框架.产品.工具或撰写书籍改变了Java编程的方式. P.S 以下排名纯属个人喜好. 1. Tomcat & Ant创始人 James Duncan ...

  4. javascript事件:获取事件对象getEvent函数

    在javascript开发中我们会经常获取页面中的事件对象,然后来处理这些事件,例如下面的getEvent函数就是获取javascript下的页面事件对象. function getEvent(eve ...

  5. 第三章SignalR在线聊天例子

    第三章SignalR在线聊天例子 本教程展示了如何使用SignalR2.0构建一个基于浏览器的聊天室程序.你将把SignalR库添加到一个空的Asp.Net Web应用程序中,创建用于发送消息到客户端 ...

  6. .net通用权限框架B/S (三)--MODEL层(2)

    接上篇 实体数据模型保存后生成上下文和实体 上下文和实体实际是由根据.tt模版生成的 当实体数据模型.edmx更新保存后,上下文和实体就会根据.tt模版自动更新 生成的上下文继承 DbContext ...

  7. 安装Ubuntu小计

    因为想学Linux了,所以想装一个Linux版本尝尝鲜,听说Ubuntu桌面版很炫,所以也没有啥特定理由的选了这个版本(实际我装的时候用了Ubuntu Kylin). 具体安装过程可以参考如下的教程: ...

  8. 《OS X Mountain Lion》 读书杂记

    OS X是一个类UNIX操作系统,由底层的Darwin和上层的OS X应用程序框架(Cocoa, Carbon, Quartz等)及Aqua用户界面组成.其中Darwin是一个开源.完整的POSIX- ...

  9. QF——对不同尺寸屏幕的适配(自动布局:AutoLayout)

    对不同尺寸设备UI的适配: 很多时候,我们的App可能运行在不同尺寸的设备上,或者横竖屏时,呈现方法应该也不一样.这样便要求UI里各控件的位置和大小不能写死. 对于不同尺寸UI的适配,一般有三种对策: ...

  10. http://blog.csdn.net/zhanglvmeng/article/details/11928469

    本系列主要结合<PHP和MYSQL WEB开发 第四版>,在阅读中提出自己认为比较重要的一些问题,以加深对知识的了解程度. 1.简短.中等以及冗长风格的表单变量 $name; //简短风格 ...