PULL解析入门

PULL解析入门PULL解析技术案例关于Android的pull解析技术详解对于一个很少写作的人来说,写一篇博客还算比较困难的,但是面对困难岂有退缩之理,好了废话说完了,开始进入正题。对于Android来说pull解析xml类型的文件应该是非常简单的,当然这是pull解析本身特性所决定的,那么接下来就跟随我的脚步来看一看pull解析的小巧之处吧。首先我从网上找了一个api接口[RRS腾讯](http://r

大家好,又见面了,我是你们的朋友全栈君。

PULL解析技术案例

关于Android的pull解析技术详解

对于一个很少写作的人来说,写一篇博客还算比较困难的,但是面对困难岂有退缩之理,好了废话说完了,开始进入正题。


    对于Android来说pull解析xml类型的文件应该是非常简单的,    
      当然这是pull解析本身特性所决定的,那么接下来就跟随我的脚步来    看一看pull解析的小巧之处吧。

习到pull解析技术,因为本api接口中的内容全部都是以xml解析的形式暴露 给大家的,该api中的一个国内新闻接口
请点击文字进行跳转。

<rss version="2.0">
  <channel>
    <title>新闻国内</title>
    <image>
      <title>新闻国内</title>
      <link>http://news.qq.com</link>
      <url>http://mat1.qq.com/news/rss/logo_news.gif</url>
    </image>
    <description>新闻国内</description>
    <link>http://news.qq.com/china_index.shtml</link>
    <copyright>Copyright 1998 - 2005 TENCENT Inc. All Rights Reserved</copyright>
    <language>zh-cn</language>
    <generator>www.qq.com</generator>
    <item>
      <title>广西律师“半裸”和法院说法不一 要求公布监控</title>
      <link>http://news.qq.com/a/20160604/030486.htm</link>
      <author>www.qq.com</author>
      <category/>
      <pubDate>2016-06-04 19:05:45</pubDate>
      <comments/>
      <description>  广西律师吴良述为其代理的一起民事纠纷案到南宁市青秀区法院立案,出门时已呈“半裸”状。本文图片均来自财新网  6月3日,广西律师吴良述为其代理的一起民事纠纷案到南宁市青秀区法院立案,出门时已呈“半裸”状,一条裤腿被撕开,衬衫也敞着怀。他称,因拒绝法警强行检查其随身物品遭殴打,衣服被撕烂。  事发后</description>
    </item>
    <item>
      <title>留德遇害女生将被接回河南老家:期盼一个交代</title>
      <link>http://news.qq.com/a/20160604/030317.htm</link>
      <author>www.qq.com</author>
      <category/>
      <pubDate>2016-06-04 18:57:47</pubDate>
      <comments/>
      <description>中国姑娘李洋洁生前照片。新华网6月4日消息,如果一切顺利,今年7月,中国姑娘李洋洁就该从德国安哈尔特应用技术大学毕业。成为一名建筑设计师是她的理想,但这个理想如今已没有实现的可能:5月11日晚,李洋洁外出跑步后再也没能回来,一起暴力犯罪夺走了她年轻的生命。“单纯”、“认真”、“充满正能量”……这是与李洋</description>
    </item>

根据这段xml文件不知道大家发现没有,如果我只想提取<item>元素中的内容那么前面有一大部分是不需要解析出来的因此这就体现了pull解析的小巧之处,固然没有JSON解析那么方便,但是xml的普遍性还是大家有目共睹的吧。接下来就到了代码时刻,我会详细讲解为何要这么做。Let`s go.

public class ParseUtils {
    public static List<channel> Parse(String values) {
        List<channel> news = null;
        channel content = null;
        try {
            XmlPullParserFactory xmlPullParserFactory = XmlPullParserFactory.newInstance();
            XmlPullParser parser = xmlPullParserFactory.newPullParser();
            String iso_8859_1 = new String(values.getBytes("ISO_8859_1"), "UTF-8");
            parser.setInput(new StringReader(iso_8859_1));
            int eventType = parser.getEventType();
            while (eventType != XmlPullParser.END_DOCUMENT) {
                String name = parser.getName();
                switch (eventType) {
                    case XmlPullParser.START_DOCUMENT:
                        news = new ArrayList<channel>();
                        break;
                    case XmlPullParser.START_TAG:
                        if (("item").equals(name)) {
                            content = new channel();
                        }
                        else if ("title".equals(name)) {
                            if (content != null) {
                                content.setTitle(parser.nextText());
                            }
                        } else if ("link".equals(name)) {
                            if (content != null) {
                                content.setLink(parser.nextText());
                            }
                        } else if ("description".equals(name)) {
                            if (content != null) {
                                content.setDescription(parser.nextText());
                            }
                        } else if ("pubDate".equals(name)) {
                            if (content != null) {
                                content.setPubDate(parser.nextText());
                            }
                        }

                        break;
                    case XmlPullParser.END_TAG:
                        if (("item").equals(name)) {
                            news.add(content);
// newspager = null;
                        }
                        break;
                }
                eventType = parser.next();
            }
            return news;
        } catch (Exception e) {
            e.printStackTrace();
        news.size()+"");
        }
        return null;
    }
}

首先我们需要建立一个XmlPullParserFactory工程,获取其实例NewInstance 。通过setinput来写入需要解析的数据。setinput 支持字节流和Reader类型字符串,这个要根据个人选择,在这里我选择了StringReader来进行-可以看到在我加入解析前,我进行了一些字符串转码,应对一些乱码问题。接下来就要详细介绍一些xml结构的介绍。

首先介绍xml如何进行相应的判断

  • XmlPullParser.END_DOCUMENT
    这个参数是判断一个xml最大范围。这个属性的作用是判断整个xml文件的开始和结束,可以说这个参数是我们小区的门卫,要想进小区呢!就先得经过门卫保安的同意,同样离开也一样需要去登记离开。
  • XmlPullParser.START_TAG
    这个参数是判断一个子范围所包含内容的开始。就好像每个小区中的每个小家一样,我想了解小区某个人家中的各个房间布局一样,我们需要先开门,因此这就是那个户的门。
  • XmlPullParser.END_TAG
    这个参数是判断刚才提及的子范围中结束的标志,这里我们可以进行一些操作,打个比方就是将每户家中的布局进行记录,并汇总给装修公司。装修公司可以提取每个用户的数据。

看到这里大家应该对pull解析有一定理解了吧。

接下来大家就要动手进行操作了,毕竟说的不不如动手学习多。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/162764.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • vue双向绑定经典案例「建议收藏」

    vue双向绑定经典案例「建议收藏」1、无需废话,直接上代码复制到新建的记事本文件,保存问demo.html即可。<scriptsrc=”https://cdn.staticfile.org/vue/2.2.2/vue.min.js”></script><!DOCTYPEhtml><html><head><metacharset=”utf-8″><title>欢迎系统</title></head>

    2025年11月17日
    7
  • 基于 mysql时序_时序数据库简介

    基于 mysql时序_时序数据库简介时间序列数据库简称时序数据库(TimeSeriesDatabase),用于处理带时间标签(按照时间的顺序变化,即时间序列化)的数据,带时间标签的数据也称为时间序列数据。时序数据的几个特点1.基本上都是插入,没有更新的需求。2.数据基本上都有时间属性,随着时间的推移不断产生新的数据。3.数据量大,每秒钟需要写入成千万上亿条数据业务方常见需求1.获取最新状态,查询最近的数据(例如传感器最新…

    2022年10月4日
    1
  • JAVA输出语句及变量

    JAVA输出语句及变量语句输出格式一 println 带有换行效果格式二 print 不带换行效果 语句是程序执行的最小单元 是以 结束的 System out println 输入快捷方法 输入 sout 或 syso 然后按 Ait 在回车 publicstatic String args 输入快捷方法 输入 main 然后按 Ait 在回车 在

    2025年12月5日
    4
  • SATA接口定义

    SATA接口定义转自:https://blog.csdn.net/u013000139/article/details/50371568SATA数据接口(7针)电源接口(15针)定义详解SATA是SerialATA(SerialAdvancedTechnologyAttachment)亦称串行ATA,是由Intel、IBM、Dell、APT、Maxtor和Seagate公司共同提出的硬盘接口规范。…

    2022年5月1日
    32
  • Vue富文本编辑器_前端富文本编辑器插件

    Vue富文本编辑器_前端富文本编辑器插件富文本编辑器博客(coder的自我修养)原文链接:http://www.imcoder.fun/archives/1591583350241TinyMC编辑器简介TinyMCE是一款易用、且功能强大的所见即所得的富文本编辑器。跟其他富文本编辑器相比,有着丰富的插件,支持多种语言,能够满足日常的业务需求并且免费。TinyMCE的优势:开源可商用,基于LGPL2.1插件丰富,自带插件基本涵盖日常所需功能接口丰富,可扩展性强,有能力可以无限拓展功能界面好看,符合现代审美提供经典、内联、沉浸无干

    2022年10月10日
    3
  • Spring boot Mybatis 整合(完整版)

    Spring boot Mybatis 整合(完整版)对Mybatis注解方式有兴趣的,可以查看我的另一篇:SpringbootMybatis整合(注解版)注解方式更加简洁简单,极大程度的提高了开发速度。如果大家需要使用更高的版本比如springboot2.0,请参照我最新的博客springboot2.0Mybatis整合(springboot2.0版本)更多干货SpringBoot快速入门SpringB…

    2022年4月27日
    33

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号