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的更多相关文章

  1. 使用PULL解析XML文件

    转载博文1:http://blog.csdn.net/wangkuifeng0118/article/details/7313241 XmlPull和Sax类似,是基于流(stream)操作文件,然后 ...

  2. Android -- 创建XML文件对象及其序列化, pull解析XML文件

    1. 创建XML文件对象及其序列化 示例代码:(模拟以xml格式备份短信到SD卡) SmsInfo.java, bean对象 /** * 短信的业务bean * @author Administrat ...

  3. Android之Pull解析XML

    一.Pull解析方法介绍 除了可以使用SAX和DOM解析XML文件,也可以使用Android内置的Pull解析器解析XML文件.Pull解析器的运行方式与SAX解析器相似.它也是事件触发的.Pull解 ...

  4. XListview的下拉刷新、上拉加载、用Pull解析XML

    做之前需要导入XListview的文件,此是用第三方的xListview实现的,东西没写全.此是在Fragment中实现的 //--------------XListView的布局---------- ...

  5. Android SAX、DOM、Pull解析xml文件剖析与案例讲解

    XML介绍 XML(Extensible Markup Language) 即可扩展标记语言,与HTML一样,都是SGML(Standard Generalized Markup Language,标 ...

  6. PULL解析XML的运行机制详解

    PULL解析简单易上手,基本上看一遍,基本上就会解析啦,但总是感觉对PULL解析的运行机制不是很了解,就总结了以下事件驱动到底是怎么执行的.. PULL: Android内置了PULL解析器.PULL ...

  7. Android——PULL解析XML

    简介 Android中常常使用XML文件保存用户的APP设置信息.因此需要对XML文件的相关操作进行了解.本文将以<学生信息管理系统>为案例背景进行介绍相关的XML解析的介绍,以及其他相关 ...

  8. Android系列--DOM、SAX、Pull解析XML

    您可以通过点击 右下角 的按钮 来对文章内容作出评价, 也可以通过左下方的 关注按钮 来关注我的博客的最新动态. 如果文章内容对您有帮助, 不要忘记点击右下角的 推荐按钮 来支持一下哦 如果您对文章内 ...

  9. 使用XML序列化器生成XML文件和利用pull解析XML文件

    首先,指定XML格式,我指定的XML格式如下: <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <message&g ...

  10. pull解析xml文件

    pull解析xml文件 先自己写一个xml文件,存一些天气信息 拿到xml文件 InputStream is = getClassLoader().getResourceAsStream(" ...

随机推荐

  1. ApplicationInsights入门到精通系列(一)

    在11月9号的上海.Net Conf开发者峰会上,我做了一个对Application Insights的Persentation,本来想着快速将其转化为一篇博客无赖最近忙成

  2. ##* %%* linux变量处理

    链接来自他们分享,,,, 如有侵权,请联系本人删除,本人将立即删除.停止分享. https://blog.csdn.net/fengzijinliang/article/details/4252021 ...

  3. cbv请求分析

    CBV源码分析 DRF中中所有视图都是基于CBV形式完成, 所以分析其cbv源码, 了解drf的基本请求流程就比较有必要了. urls.py """下面是一个通用的url ...

  4. java程序员面试答题技巧

    答题时,先答是什么,再答有什么作用和要注意什么(这部分最重要,展现自己的心得) 答案的段落分别,层次分明,条理清晰都非常重要,从这些表面的东西也可以看出一个人的 习惯.办事风格.条理等. 要讲你做出答 ...

  5. 特殊权限set_uid、set_gid、stick_bit、软链接、硬链接文件 使用介绍

    第2周第4次课(3月29日) 课程内容:2.18 特殊权限set_uid2.19 特殊权限set_gid2.20 特殊权限stick_bit2.21 软链接文件2.22 硬链接文件     2.18  ...

  6. df命令、du命令、磁盘分区 使用介绍

    第4周第1次课(4月9日) 课程内容:4.1 df命令4.2 du命令4.3/4.4 磁盘分区 4.1 df命令 汇报磁盘空间使用情况,linux磁盘挂载点是无法直接访问的. df 和 df -h区别 ...

  7. 第四章 开始Unity Shader学习之旅(1)

    1. 一个最简单的顶点/片元着色器 现在,我们正式开始学习如何编写Unity Shader,更准确的说是,学习如何编写顶点/片元着色器 2.顶点/片元着色器的基本结构 我们在以前已经讲过了Unity ...

  8. firefox-5.x关于img标签的load事件、svg、ff5.4audio标签显示的适配tip

    1.firefox中img标签的load事件后获取图片宽高错误. 需求是根据图片加载后的大小宽高比,调整图片显示的宽高. 在chrome浏览器下,使用jquery的load方法监听img标签的&quo ...

  9. 关于token你需要知道的【华为云技术分享】

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/devcloud/article/detai ...

  10. 对于Python函数与方法,你可能存在些误解

    欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...