android之解析xml(XmlPullParser)
来源:互联网 发布:阿里云费用中心是什么 编辑:程序博客网 时间:2024/06/03 16:05
转载请注明出处 http://blog.csdn.net/luckty/article/details/72782725
之前的开发中都是使用sp存储数据获取,或者网络存储。偶然在技术讨论群里边有人在说怎么解析xml,所以就想要不写一个xml解析的工具类
那我就心想打算做一个解析的类
解析方式:XmlPullPaser
一、首先我们建一个XML
user.xnl
<?xml version="1.0" encoding="UTF-8"?><users> <user > <name>Mars</name> <age>26</age> <sex>男</sex> </user> <user > <name>Lynn</name> <age>24</age> <sex>女</sex> </user> <user > <name>Kervin</name> <age>未知</age> <sex>未知</sex> </user></users>
看一下结构
开头是<users></users> 对标签 名字其实无所谓,不过不要和下面的属性标签相同
中间就是<user></user> 以及user属性标签就不过多解释了,树形结构
二、创建解析类
在了解xml数据结构之后我们开始使用xmlpullparser去解析
创建一个类XmlPullPaserUtils
创建方法getObject();
为了能够通用,所以我使用了泛型去作为实体类Bean
方法参数说:
1、InputStream 输入流,用于读取xml文件
2、Class<T> clazz 实体类
3、tag 就是标签类的list
4、解析处理回调
public static <T extends Object> ArrayList<T> getObject(InputStream xml, Class<T> clazz, ArrayList<String> tag, XmlPullPaserCallBack xmlPullPaserCallBack) throws Exception { ArrayList<T> objList = null; T obj = null; XmlPullParser pullParser = Xml.newPullParser(); pullParser.setInput(xml, "UTF-8"); //为Pull解释器设置要解析的XML数据 int event = pullParser.getEventType();//判断xml标签类型 while (event != XmlPullParser.END_DOCUMENT) {//循环判断 switch (event) { case XmlPullParser.START_DOCUMENT://解析文档开始标志 objList = new ArrayList<T>(); //初始化beanlist break; case XmlPullParser.START_TAG: if (tag.get(0).equals(pullParser.getName())) {//判断是不是taglist中的第一个bean标签 obj = clazz.newInstance();//初始化泛型 event = pullParser.next();//继续往下找tag } for (int i = 1; i < tag.size() - 1; i++) { if (tag.get(i).equals(pullParser.getName())) {
xmlPullPaserCallBack.setParams(obj, tag.get(i), pullParser.nextText());//回调处理Bean类属性设置
event = pullParser.next();
//继续往下找tag
} } break; case XmlPullParser.END_TAG://end 标志
//end of xml if (tag.get(tag.size() - 1).equals(pullParser.getName())) { objList.add(obj); obj = null; } break; } event = pullParser.next(); } return objList;}
//回调内部接口类
public interface XmlPullPaserCallBack { void setParams(Object obj, String paramsName, String value);}
到这里工具类就写好了,现在来看一个例子
//x新建bean类
public class User { public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } private String name; private String age; public User(){ } public User(String name, String age, String sex) { this.name = name; this.age = age; this.sex = sex; } @Override public String toString() { return "User{" + "name='" + name + '\'' + ", age='" + age + '\'' + ", sex='" + sex + '\'' + '}'; } private String sex;}
由于获取需要有四个参数 我们就先初始化这个参数
接口实现方法
运行看解析结果
扩张一下,如果你想使用file去实现也一样,这就涉及到IO了,这一知识点就不赘述,大家可以自己去尝试封装改版
如有问题请留言或者邮件到651717448@qq.com
阅读全文
0 0
- android之解析xml(XmlPullParser)
- Android解析XML之XmlPullParser
- android xml解析之XmlPullParser
- Android中XML解析之XMLPullParser解析
- Android解析XML文档之XmlPullParser
- android解析xml文件之XmlPullParser
- Android之XmlPullParser解析城市列表XML
- android XmlPullParser解析xml
- android 解析xml -XmlPullParser
- Android-XmlPullParser解析XML
- Xml、XmlPullparser解析数据Android
- android xml解析 XmlPullParser & XmlSerializer
- android (XML) XmlPullParser
- Android网络编程之三:XmlPullParser解析Xml文件
- Android解析XML应用(一) XmlPullParser工具解析
- xml解析之XmlPullParser解析器
- android xml解析 XmlPullParser的使用
- android xml解析 XmlPullParser的使用
- Github安全开源工具集合
- 第十九天 servlet相关类的整理笔记
- 08-图9 关键活动 (30分)
- spring多版本整合
- java:文件流下载文档
- android之解析xml(XmlPullParser)
- SQLi Labs 指南
- POJ3320-Jessica's Reading Problem
- 分布式锁的实现
- bzoj4583 购物
- BZOJ 3275: Number 最小割
- GTK3.0学习第二天---信号(signal)等
- Ajax 与跨域 小结
- javascript 学习一 文件路径