Android XmlPullParser 方式解析 Xml 文档

xml 文件格式
<?xml version="1.0" encoding="UTF-8"?>
<persons>
<person id="1">
<name>张三</name>
<age>22</age>
</person>
<person id="2">
<name>李四</name>
<age>20</age>
</person>
</persons>
XmlPullParser 方式解析 xml 文件
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlSerializer;
import com.eboy.domain.Person;
import android.util.Xml;
public class PersonService {
public static List<Person> getPersons(InputStream xml) throws Exception {
List<Person> persons = null;
Person person = null;
XmlPullParser pullParser = Xml.newPullParser();
pullParser.setInput(xml, "UTF-8"); // 为Pull解释器设置要解析的XML数据
int event = pullParser.getEventType();
while (event != XmlPullParser.END_DOCUMENT) {
switch (event) {
case XmlPullParser.START_DOCUMENT:
persons = new ArrayList<Person>();
break;
case XmlPullParser.START_TAG:
if ("person".equals(pullParser.getName())) {
int id = Integer.valueOf(pullParser.getAttributeValue(0));
person = new Person();
person.setId(id);
}
if ("name".equals(pullParser.getName())) {
String name = pullParser.nextText();
person.setName(name);
}
if ("age".equals(pullParser.getName())) {
int age = Integer.valueOf(pullParser.nextText());
person.setAge(age);
}
break;
case XmlPullParser.END_TAG:
if ("person".equals(pullParser.getName())) {
persons.add(person);
person = null;
}
break;
}
event = pullParser.next();
}
return persons;
}
/**
* 保存数据到xml文件中
* @param persons
* @param out
* @throws Exception
*/
public static void save(List<Person> persons, OutputStream out) throws Exception {
XmlSerializer serializer = Xml.newSerializer();
serializer.setOutput(out, "UTF-8");
serializer.startDocument("UTF-8", true);
serializer.startTag(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().toString());
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();
out.flush();
out.close();
}
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# Android
# XmlPullParser
# 解析
# Xml
# 文档
# Android编程解析XML文件的方法详解【基于XmlPullParser】
# Android编程使用pull方式解析xml格式文件的方法详解
# 详解Android之解析XML文件三种方式(DOM
# PULL
# SAX)
# Android解析XML(PULL)展示到ListView
# Android平台基于Pull方式对XML文件解析与写入方法详解
# 实例解析Android中使用Pull解析器解析XML的方法
# android4.0混淆XmlPullParser报错原因分析解决
# Android pull解析xml的实现方法
# 希望能
# 谢谢大家
# 李四
# util
# OutputStream
# org
# List
# ArrayList
# InputStream
# java
# io
# import
# public
相关文章:
建站主机服务器选购指南:轻量应用与VPS配置解析
制作证书网站有哪些,全国城建培训中心证书查询官网?
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
如何实现建站之星域名转发设置?
如何在Golang中使用replace替换模块_指定本地或远程路径
建站之星ASP如何实现CMS高效搭建与安全管理?
建站之星备案流程有哪些注意事项?
番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?
交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?
制作门户网站的参考文献在哪,小说网站怎么建立?
制作网站外包平台,自动化接单网站有哪些?
如何用免费手机建站系统零基础打造专业网站?
如何打造高效商业网站?建站目的决定转化率
如何选购建站域名与空间?自助平台全解析
小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建
C#如何序列化对象为XML XmlSerializer用法
小程序网站制作需要准备什么资料,如何制作小程序?
专业网站制作服务公司,有哪些网站可以免费发布招聘信息?
网站制作大概多少钱一个,做一个平台网站大概多少钱?
如何做网站制作流程,*游戏网站怎么搭建?
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何规划企业建站流程的关键步骤?
如何用虚拟主机快速搭建网站?详细步骤解析
已有域名和空间如何快速搭建网站?
网站制作免费,什么网站能看正片电影?
如何挑选高效建站主机与优质域名?
网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?
如何快速登录WAP自助建站平台?
可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?
微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?
大学网站设计制作软件有哪些,如何将网站制作成自己app?
临沂网站制作企业,临沂第三中学官方网站?
购物网站制作公司有哪些,哪个购物网站比较好?
韩国服务器如何优化跨境访问实现高效连接?
公司网站制作需要多少钱,找人做公司网站需要多少钱?
如何在Golang中处理模块冲突_解决依赖版本不兼容问题
Thinkphp 中 distinct 的用法解析
济南专业网站制作公司,济南信息工程学校怎么样?
免费公司网站制作软件,如何申请免费主页空间做自己的网站?
免费ppt制作网站,有没有值得推荐的免费PPT网站?
装修招标网站设计制作流程,装修招标流程?
正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?
建站主机选哪家性价比最高?
南平网站制作公司,2025年南平市事业单位报名时间?
建站之星后台搭建步骤解析:模板选择与产品管理实操指南
已有域名如何快速搭建专属网站?
如何快速搭建高效WAP手机网站?
c++如何打印函数堆栈信息_c++ backtrace函数与符号名解析【方法】
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
*请认真填写需求信息,我们会在24小时内与您取得联系。