android 之 XMLPull
Pull解析
Pull的XML解析操作与SAX解析操作类似,也是采用事件驱动的方式。当XML文档开始解析或者遇到节点时都会有相应的事件代码触发。
主要涉及两个类:
org.xmlpull.v1.XmlPullParserFactory
org.xmlpull.v1.XmlPullParser
使用XMLPull解析xml文件的步骤:
1.创建工厂类
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
2.创建parser
XmlPullParser xpp = factory.newPullParser();
3.设置输入流,即要解析的内容
xpp.setInput(input, "GBK"); //这里主要由两种形式,字符流(如:StringReader)或者字节流(如:FileInputStream)
4.通过循环,解析内容
int eventType = xpp.getEventType(); //必须要有
while(eventType != XmlPullParser.END_DOCUMENT) {
if(eventType == XmlPullParser.START_DOCUMENT) {
all = new ArrayList<LinkMan>();
} else if(eventType == XmlPullParser.START_TAG) {
elementName = xpp.getName();
if("linkman".equals(elementName)) {
man = new LinkMan();
}
} else if(eventType == XmlPullParser.END_TAG) {
elementName = xpp.getName();
if("linkman".equals(elementName)) {
all.add(man);
man = null;
}
} else if(eventType == XmlPullParser.TEXT) {
if("name".equals(elementName)) {
man.setName(xpp.getText());
} else if("email".equals(elementName)) {
man.setEmail(xpp.getText());
}
}
eventType = xpp.next(); //一定要有
}
Pull生成XML文档
需要利用org.xmlpull.v1.XmlSerializer
使用XmlSerializer生成XML文件的步骤和解析xml文件的步骤类似:
1.创建工厂类
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
2.创建XmlSerializer
XmlSerializer xs = factory.newSerializer();
3.设置输出流,即要写入的目标位置流,可以是字节流,也可以是字符流。
xs.setOutput(output, "UTF-8");
4.处理输出内容
xs.startDocument("UTF-8", true);
xs.startTag(null, "addresslist");
Iterator<LinkMan> iter = this.all.iterator();
while(iter.hasNext()) {
LinkMan man = iter.next();
xs.startTag(null, "linkman");
xs.startTag(null, "name");
xs.text(man.getName());
xs.endTag(null, "name");
xs.startTag(null, "email");
xs.text(man.getEmail());
xs.endTag(null, "email");
xs.endTag(null, "linkman");
}
xs.endTag(null, "addresslist");
xs.endDocument();
xs.flush();
android 之 XMLPull的更多相关文章
- Android之使用XMLPull解析xml(二)
转自:http://www.blogjava.net/sxyx2008/archive/2010/08/04/327885.html 介绍下在Android中极力推荐的xmlpull方式解析xml.x ...
- Android xmlpull 方式解析xml文件
1.新建一个xml文件,放在res/xml目录下 <?xml version="1.0" encoding="utf-8"?> <citys& ...
- android解析xml一直报错org.xmlpull.v1.XmlPullParserException
错误: org.xmlpull.v1.XmlPullParserException: Unexpected token (position:TEXT @1:2 injava.io.String ...
- Android—基于微信开放平台v3SDK,开发微信支付填坑。
接触微信支付之前听说过这是一个坑,,,心里已经有了准备...我以为我没准跳坑出不来了,没有想到我填上了,调用成功之后我感觉公司所有的同事都是漂亮的,隔着北京的大雾霾我仿佛看见了太阳~~~好了,装逼结束 ...
- Android之Pull解析XML
一.Pull解析方法介绍 除了可以使用SAX和DOM解析XML文件,也可以使用Android内置的Pull解析器解析XML文件.Pull解析器的运行方式与SAX解析器相似.它也是事件触发的.Pull解 ...
- android GPS定位源码 地图显示位置源码 有用到的小伙伴自提取
package com.jasgroup.cn.amhdeam; import java.io.IOException; import java.util.Iterator; import andro ...
- Android系统的五种数据存储形式(二)
之前介绍了Android系统下三种数据存储形式,今天补充介绍另外两种,分别是内容提供者和网络存储.有些人可能认为内存提供者和网络存储更偏向于对数据的操作而不是数据的存储,但这两种方式确实与数据有关,所 ...
- 【Android】实现XML解析的几种技术
本文介绍在Android平台中实现对XML的三种解析方式. XML在各种开发中都广泛应用,Android也不例外.作为承载数据的一个重要角色,如何读写XML成为Android开发中一项重要的技能. 在 ...
- Android程序进行混淆,在导出签名apk包时出错!
今天终于完成了近一个月的App开发工作,对程序进行混淆导出签名apk包时,却出现了如下的错误: Proguard returned with error code 1. See console Not ...
随机推荐
- Microsoft SQL Server
instance / database / schema / object login / user / schema (dbo) sequence Collation PSM: Both Insta ...
- c++ 对象内存分配和虚函数
1. c++类对象(不含虚函数)在内存中的分布 c++类中有四种成员:静态数据.非静态数据.静态函数.非静态函数. 1. 非静态数据成员放在每个对象内部,作为对象专有的数据成员 2. 静态数据成员被抽 ...
- Linux 命令速查
学生信,Linux是最最基本的技能,要尽量将自己的工作平台转移到Linux,编程写脚本,这样会极大的提升工作效率,找工作时也不会太怂.Linux所有的任务都是通过命令来完成的,具有高度的统一性.Lin ...
- 爬虫基础学习 转【http://www.cnblogs.com/huangxincheng/archive/2012/11/08/2759752.html】
这一篇我们聊聊在页面抓取时应该注意到的几个问题. 一:网页更新 我们知道,一般网页中的信息是不断翻新的,这也要求我们定期的去抓这些新信息,但是这个“定期”该怎么理解,也就是多长时间需要 抓一次该页面, ...
- servlet和web容器之间的关系
Java是一种动态加载和运行的语言.也就是说当应用程序持有一个类的地址(CLASSPATH)和名称(包名和类名)的情况下,可以在程序运行期 间任何时候加载这个类,并创建和使用该类的对象.Servlet ...
- hduoj----1142A Walk Through the Forest(记忆化搜索+最短路)
A Walk Through the Forest Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Jav ...
- word文档中查找和替换空格符和回车符
空格符:^l 回车符:^p
- SELECTION-SCREEN 加按钮
这是我喜欢的这种模式,选择屏加个新建按钮,直接跳转到主屏幕做单据. 选择屏就直接查询,双击查询结果跳转到主屏幕.... 做好编辑控制,事件处理...EVERYTHING IS SOOOOOOO NIC ...
- Java三大特征之------多态
1.定义 指允许不同类的对象对同一消息做出响应.即同一消息可以根据发送对象的不同而采用多种不同的行为方式. 2.存在条件 2.1存在父子关系 2.2子类中存在重写方法 2.3父类类型的变量指向子类对象 ...
- Play framework logging设置
play的logger是基于Log4j,Play 2.0 uses logback as its logging engine. 一.配置 1. 在conf/application.conf中设置lo ...