通过pull解析器操作安卓的xml
通过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的更多相关文章
- 无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)
1.android下junit测试框架配置 单元测试需要在手机中进行安装测试 (1).在清单文件中manifest节点下配置如下节点 <instrumentation android:name= ...
- 安卓使用pull解析器解析XML文件
学习一下: public class MainActivity extends Activity { List<City> cityList; @Override protected vo ...
- Android(java)学习笔记187:Android中操作XML数据(使用Pull解析器)
1. Pull解析器的运行方式与 SAX 解析器相似.它提供了类似的事件,如:开始元素和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件.跟SAX不同的是, Pull解析器 ...
- Android(java)学习笔记130:Android中操作XML数据(使用Pull解析器)
1. Pull解析器的运行方式与 SAX 解析器相似.它提供了类似的事件,如:开始元素和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件.跟SAX不同的是, Pull解析器 ...
- 15_采用Pull解析器解析和生成XML内容
java还提供SAX和DOM用于解析XML Android还集成了Pull解析器——推荐 package cn.itcast.service; import java.io.InputStream; ...
- 使用Pull解析器生成XML文件和读取xml文件
有些时候,我们需要生成一个XML文件,生成XML文件的方法有很多,如:可以只使用一个StringBuilder组拼XML内容,然后把内容写入到文件中:或者使用DOM API生成XML文件,或者也可以使 ...
- 用PULL解析器解析XML文件
第一种方式(简洁,直接用pullparser.nextText()来返回下一个String类型的值): 1 package lee.service; 2 3 import java.io.InputS ...
- Android开发8——利用pull解析器读写XML文件
一.基本介绍 对XML解析有SAX和DOM等多种方式,Android中极力推荐xmlpull方式解析xml.xmlpull不仅可用在Android上同样也适用于javase,但在javase环境中需自 ...
- 使用Pull解析器生成XML文件
有些时候,我们需要生成一个XML文件,生成XML文件的方法有很多,如:可以只使用一个StringBuilder组拼XML内容,然后把内容写入到文件中:或者使用DOM API生成XML文件,或者也可以使 ...
随机推荐
- Mindjet 一打开鼠标就动不了解决方法
在网上查找了一下相关资料,这个主要是Mindjet不支持64位系统造成的,其实就和Windows tablet pc input 这个服务相冲突造成的,临时的解决方法是,win+r (别告诉我你不知道 ...
- java代码收藏:获取HttpServletRequest中某一前缀的参数
public static Map getParametersStartingWith(ServletRequest request, String prefix) { Enumeration par ...
- Qt学习--部件深入--烤猪蹄
1,进程条--向用户显示程序的当前状态,向用户提示该任务需要多长时间才能够完成. Qt-ProgressBar创建进程条,QProgressBar,为了使进程条担当起进程指示功能,需要执行定义进程条的 ...
- zoj2588 Burning Bridges(无向图的桥)
题目请戳这里 题目大意:给一张无向图,现在要去掉一些边,使图仍然连通,求不能去掉的边. 题目分析:就是求无向图的桥. tarjan算法跑一遍,和无向图割点十分类似,这里要找low[v] > df ...
- linux学习之八-Linux本机性能监控
Linux 优化 1.看看磁盘有没有满(根目录有没有满).内存有没有满.CPU有没有满 查看磁盘有没有满,使用df -h 看看磁盘使用情况 查看内存使用 free -m 特别关注swap用了多少 ...
- wxpython 树形控件全选和取消全选
#encoding:utf-8 import wx import wx.lib.agw.customtreectrl as CT class MyFrame(wx.Frame): def __init ...
- 通过属性集名称获取属性集id
Mage::getModel('eav/entity_attribute_set')->load('属性集名称', 'attribute_set_name')->getAttributeS ...
- 前端入门HTML5扩展知识(一)
一. 请描述一个网页从开始请求到最终显示的完整过程? 1. 在浏览器中输入网址: 2. 发送至 DNS 服务器并获得域名对应的 WEB 服务器的 IP 地址: 3. 与 WEB 服务器建立 TC ...
- SQL Server数据库---》基础
SQL Server:只是操作数据库的一个工具(这种工具,只是提供一个界面化的方式让用户方便操作数据库) 开启服务:点击:我的电脑(计算机)--管理--服务和应用程序--服务--开启SQL Serve ...
- OC弱语法
OC是在运行过程中才会检测对象有没有实现相应的方法,所有编译过程只给出警告:可能找不到对应方法: 如果程序在运行过程中出错,就会出现程序闪退: 类方法:类可以直接调用的方法,相当于java中的 ...