18.JAVA-pull解析XML
1.pull解析介绍
pull解析其实和我们上章学的sax解析原理非常类似,在Android中非常常用.
在java中,需自己获取xmlpull所依赖的类库分别为:kxml2-2.3.0.jar,xmlpull_1_1_3_4c.jar。
pull和sax区别
- sax: 被动解析,一旦解析,则必须等待解析完成,不能控制事件的处理主动结束。
- pull: 主动解析, 比SAX会更加灵活,因此可以在满足了需要的条件后停止解析,不再获取事件.
2.pull解析步骤
- 获取XmlPullParser解析器,通过XmlPullParserFactory工厂类获取
- 通过XmlPullParser. setInput(new FileInputStream (),"utf-8")设置解析器的输入文件以及格式
- 然后通过XmlPullParser.getEventType()一直while获取当前事件类型(文档开头/元素开头/内容/文档结束等).然后通过getName()等方法获取元素名、内容等,直到遇到END_DOCUMENT(文档结束)退出.
XmlPullParser中常用方法如下:
getName(); //获取当前元素名 getTextCharacters(); //获取当前内容(当getEventType ()==TEXT时通过这个来获取元素内容) nextText(); //获取下个内容(当getEventType ()==START_TAG时通过这个来获取元素内容)
3.persons.xml示例如下
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<persons>
<person>
<姓名>张三</姓名>
<性别>男</性别>
<年龄>99</年龄>
</person> <person>
<姓名>李四</姓名>
<性别>男</性别>
<年龄>17</年龄>
</person> </persons>
4.代码如下
@Test
public void PullParseXml() throws Exception{
ArrayList<Person> list = null;
Person person = null;
//1.获取XmlPullParser解析器,通过XmlPullParserFactory工厂类获取
XmlPullParserFactory xmlPullParserFactory = XmlPullParserFactory.newInstance();
XmlPullParser xmlPullParser = xmlPullParserFactory.newPullParser();
//2.设置解析器的输入文件以及格式
xmlPullParser.setInput(new FileInputStream(new File("src//persons.xml")),"utf-8");
//3.while获取当前事件类型.然后获取元素名、内容等,直到遇到END_DOCUMENT(文档结束)退出.
int type = xmlPullParser.getEventType();
while(type!=xmlPullParser.END_DOCUMENT)
{
if(type==xmlPullParser.START_TAG) //开始元素
{
if("persons".equals(xmlPullParser.getName()))
{
list = new ArrayList<Person>();
}
else if("person".equals(xmlPullParser.getName()))
{
person = new Person();
}
else if("姓名".equals(xmlPullParser.getName()))
{
person.setName(xmlPullParser.nextText());
}
else if("性别".equals(xmlPullParser.getName()))
{
person.setSex(xmlPullParser.nextText());
}
else if("年龄".equals(xmlPullParser.getName()))
{
person.setAge(xmlPullParser.nextText());
}
}
else if(type==xmlPullParser.END_TAG) //结束元素
{
if("person".equals(xmlPullParser.getName()))
{
list.add(person);
}
}
type = xmlPullParser.next();
}
//打印:
for(Person person1:list){
System.out.println(person1);
}
}
打印:

18.JAVA-pull解析XML的更多相关文章
- 使用PULL解析XML文件
转载博文1:http://blog.csdn.net/wangkuifeng0118/article/details/7313241 XmlPull和Sax类似,是基于流(stream)操作文件,然后 ...
- Android -- 创建XML文件对象及其序列化, pull解析XML文件
1. 创建XML文件对象及其序列化 示例代码:(模拟以xml格式备份短信到SD卡) SmsInfo.java, bean对象 /** * 短信的业务bean * @author Administrat ...
- Android之Pull解析XML
一.Pull解析方法介绍 除了可以使用SAX和DOM解析XML文件,也可以使用Android内置的Pull解析器解析XML文件.Pull解析器的运行方式与SAX解析器相似.它也是事件触发的.Pull解 ...
- XListview的下拉刷新、上拉加载、用Pull解析XML
做之前需要导入XListview的文件,此是用第三方的xListview实现的,东西没写全.此是在Fragment中实现的 //--------------XListView的布局---------- ...
- Android SAX、DOM、Pull解析xml文件剖析与案例讲解
XML介绍 XML(Extensible Markup Language) 即可扩展标记语言,与HTML一样,都是SGML(Standard Generalized Markup Language,标 ...
- PULL解析XML的运行机制详解
PULL解析简单易上手,基本上看一遍,基本上就会解析啦,但总是感觉对PULL解析的运行机制不是很了解,就总结了以下事件驱动到底是怎么执行的.. PULL: Android内置了PULL解析器.PULL ...
- Android——PULL解析XML
简介 Android中常常使用XML文件保存用户的APP设置信息.因此需要对XML文件的相关操作进行了解.本文将以<学生信息管理系统>为案例背景进行介绍相关的XML解析的介绍,以及其他相关 ...
- Android系列--DOM、SAX、Pull解析XML
您可以通过点击 右下角 的按钮 来对文章内容作出评价, 也可以通过左下方的 关注按钮 来关注我的博客的最新动态. 如果文章内容对您有帮助, 不要忘记点击右下角的 推荐按钮 来支持一下哦 如果您对文章内 ...
- 使用XML序列化器生成XML文件和利用pull解析XML文件
首先,指定XML格式,我指定的XML格式如下: <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <message&g ...
- pull解析xml文件
pull解析xml文件 先自己写一个xml文件,存一些天气信息 拿到xml文件 InputStream is = getClassLoader().getResourceAsStream(" ...
随机推荐
- selenium(java)浏览器多窗口切换处理
要在多个窗口直接切换,首先获取每个窗口的唯一标示符(句柄),通过窗口属性可以获取所有打开窗口的标示符,以集合的形式返回:以下示例: Set<String> winHandels ...
- MySQL(学生表、教师表、课程表、成绩表)多表查询
1.表架构 student(sid,sname,sage,ssex) 学生表 course(cid,cname,tid) 课程表 sC(sid,cid,score) 成绩表 teacher(tid,t ...
- 【搞定面试官】你还在用Executors来创建线程池?会有什么问题呢?
前言 上文我们介绍了JDK中的线程池框架Executor.我们知道,只要需要创建线程的情况下,即使是在单线程模式下,我们也要尽量使用Executor.即: ExecutorService fixedT ...
- day20191109spring
笔记: 1.Idea构建maven项目之web应用项目 src main java文件夹中定义 Java源程序 resources文件中定义 资源配置文件信息 test文件夹中定义 测试Java程序 ...
- KFC-位置分页爬虫
import requests import json if name == 'main': #记录总数 raw_count=0 #查询页数 page=1 #存储数据 data=[] #判断有无数据条 ...
- MVC WebApi 返回字符串
[HttpGet] public HttpResponseMessage GetWebConfigValue(string key) { var response = Request.CreateRe ...
- Educational Codeforces Round 34 (Rated for Div. 2) A B C D
Educational Codeforces Round 34 (Rated for Div. 2) A Hungry Student Problem 题目链接: http://codeforces. ...
- 使用cookies弹出层每24小时弹出一次
第一步:下载cookies的库 https://github.com/js-cookie/js-cookie 第二步:设置Cookies的失效时间,这里有两种方法,按天计算和按小时计算 functio ...
- Leecode_137_singleNumberII
参考: http://blog.csdn.net/jocyln9026/article/details/19397477
- VIM操作记录
=============================================== 2019/12/12_第1次修改 vr7jj ============================= ...