xml 格式数据

 <?xml version="1.0" encoding="UTF-8"?>

 <user-list>
<user id="1">
<name>张三</name>
<age>22</age>
</user> <user id="2">
<name>李四</name>
<age>28</age>
</user> <user id="3">
<name>王五</name>
<age>32</age>
</user> </user-list>

XmlPullParserFactory 解析 xml 数据

 package com.example.dashu_xml;

 import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List; import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory; import android.R.integer; /**
* pull解析xml
* */
public class PullXmlTools {
public PullXmlTools() {
} /**
* inputStream通常为服务器端获取的io流 encode编码格式
*
* @throws XmlPullParserException
* @throws IOException
* @throws NumberFormatException
* */
public static List<User> parseXML(InputStream inputStream, String encode)
throws XmlPullParserException, NumberFormatException, IOException {
List<User> list = null;
User user = null;// 装载每一个节点的内容
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
// 获得xml解析类引用
XmlPullParser pullParser = factory.newPullParser();
pullParser.setInput(inputStream, encode);
// 获得事件类型
int eventType = pullParser.getEventType();
// 判定是否解析到文档结束
while (eventType != XmlPullParser.END_DOCUMENT) {
switch (eventType) {
case XmlPullParser.START_DOCUMENT:// 开始文档
list = new ArrayList<User>();
break;
case XmlPullParser.START_TAG:// 开始节点
if ("user".equals(pullParser.getName())) {
user = new User();
int id = Integer.parseInt(pullParser.getAttributeValue(
null, "id").toString());
user.setId(id);
}
if (user != null) {
if ("name".equals(pullParser.getName())) {
String name = pullParser.nextText().toString();
user.setName(name);
}
if ("age".equals(pullParser.getName())) {
int age = Integer.parseInt(pullParser.nextText()
.toString());// 取出id
user.setAge(age);
}
}
break;
case XmlPullParser.END_TAG:// 结束节点时候
if ("user".equals(pullParser.getName())) {
list.add(user);
user = null;
}
break;
default:
break;
}
eventType = pullParser.next();// 下一个解析标识
}
return list;
}
}

【参考文献】

http://blog.csdn.net/u010794950/article/details/24574627

Android 开发工具类 12_PullXmlTools的更多相关文章

  1. Android开发工具类

    7种无须编程的DIY开发工具 你知道几个? 现如今,各种DIY开发工具不断的出现,使得企业和个人在短短几分钟内就能完成应用的创建和发布,大大节省了在时间和资金上的投入.此外,DIY工 具的出现,也帮助 ...

  2. android开发工具类之获得WIFI IP地址或者手机网络IP

    有的时候我们需要获得WIFI的IP地址获得手机网络的IP地址,这是一个工具类,专门解决这个问题,这里需要两个权限: <uses-permission android:name="and ...

  3. android开发工具类总结(一)

    一.日志工具类 Log.java public class L { private L() { /* 不可被实例化 */ throw new UnsupportedOperationException ...

  4. Android 开发工具类 35_PatchUtils

    增量更新工具类[https://github.com/cundong/SmartAppUpdates] import java.io.File; import android.app.Activity ...

  5. Android 开发工具类 13_ SaxService

    网络 xml 解析方式 package com.example.dashu_saxxml; import java.io.IOException; import java.io.InputStream ...

  6. Android 开发工具类 06_NetUtils

    跟网络相关的工具类: 1.判断网络是否连接: 2.判断是否是 wifi 连接: 3.打开网络设置界面: import android.app.Activity; import android.cont ...

  7. Android 开发工具类 03_HttpUtils

    Http 请求的工具类: 1.异步的 Get 请求: 2.异步的 Post 请求: 3.Get 请求,获得返回数据: 4.向指定 URL 发送 POST方法的请求. import java.io.Bu ...

  8. Android 开发工具类 19_NetworkStateReceiver

    检测网络状态改变类: 1.注册网络状态广播: 2.检查网络状态: 3.注销网络状态广播: 4.获取当前网络状态,true为网络连接成功,否则网络连接失败: 5.注册网络连接观察者: 6.注销网络连接观 ...

  9. Android 开发工具类 27_多线程下载大文件

    多线程下载大文件时序图 FileDownloader.java package com.wangjialin.internet.service.downloader; import java.io.F ...

随机推荐

  1. 如何使用masonry设计复合型cell[转]

    前言 其实早在@sunnyxx同学发布UIView-FDCollapsibleConstraints的时候 我就说要写一下怎么用代码来稍微麻烦的实现复用的问题 但是一直各种没时间(主要是我的办法太复杂 ...

  2. hdu 1877

    题目 一个进制转换的题,注意0+0的情况 代码如下: #include <cstdio> int d[1000]; void solve(int n,int base) { int p = ...

  3. 在EBS里新建一个OU的步骤

    http://blog.csdn.net/kevingao/archive/2010/09/11/5877092.aspx 在EBS里新建一个OU的步骤1. 建立OU组织,关联SOB,LE2. 系统管 ...

  4. Google Summer of Code礼包

    这个暑假参加google summer of code, 给Google的分布式容器管理系统kubernates开发新的特性,希望从中学习更多的分布式的技术,锻炼自己的编程技巧. 中午在学校的图书馆吗 ...

  5. [ACM_数据结构] Color the ball [线段树水题][数组开大]

    Description N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的“小飞鸽"牌电动车从气球a开始到气球b依次 ...

  6. python 几种方法实现随机生成8位同时包含数字、大写字符、小写字符密码的小程序

    python 实现随机生成包8位包含大写字母.小写字母和数字的密码的程序.要求:1用户输入多少次就生成多少条密码,2要求密码必须同时包含大写字母.小写字母和数字,长度8位,不能重复代码如下: impo ...

  7. Socket编程入门

      socket基本知识 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket. 建立网络通信连接至少要一对端口号(socket).socket本质是编程接口(AP ...

  8. 程序媛计划——mysql外键

    定义 外键:如果一个表的某个字段指向另一个表的主键,就称之为外键.被指向的表,称之为主表,也叫父表,那么另一个表就是从表,也叫子表 #先新建两个表 mysql> create table aut ...

  9. Mac OS 10.12 - Gogland和在Windows中使用的不同!!

    刚刚在Mac OS 10.12用Gogland写了一个小小的GO语言测试程序,经过一番尝试才算把Gogland配置好,写出这个测试程序!Gogland在Mac OS 10.12里和Windows里面确 ...

  10. dataframe.isnull()函数, DatetimeIndex,黄包车代码155行

    待解决 feature 4 完全没懂 feature 5 219行: if (row.userid == action['userid'][row.max_index - 1]):   ????