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解析有一定理解了吧。

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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Oracle12c错误01017,ORACLE12.2中用户无法登陆报ORA-01017的解决办法

    Oracle12c错误01017,ORACLE12.2中用户无法登陆报ORA-01017的解决办法ORACLE12.2中用户无法登陆报ORA-01017的解决办法错误现象:在ORACLE12.2中创建一个用户linfy后,登陆:SQL>showpdbs;CON_IDCON_NAMEOPENMODERESTRICTED——————————————————-…

  • Java中&、|、&&、||详解

    Java中&、|、&&、||详解1、Java中&amp;叫做按位与,&amp;&amp;叫做短路与,它们的区别是:&amp;既是位运算符又是逻辑运算符,&amp;的两侧可以是int,也可以是boolean表达式,当&amp;两侧是int时,要先把运算符两侧的数转化为二进制数再进行运算,而短路与(&amp;&amp;)的两侧要求必须是布尔表达式。举例如下:12&amp;5的值是多少?答:12转成二进制数是1100(前四…

  • 黑客暴力激活成功教程必备的12大逆向工具!设置再复杂的密码也没用!

    黑客暴力激活成功教程必备的12大逆向工具!设置再复杂的密码也没用!暴力激活成功教程攻击是最流行的密码激活成功教程方法之一,然而,它不仅仅是密码激活成功教程。暴力攻击还可用于发现Web应用程序中的隐藏页面和内容,在你成功之前,这种攻击基本上是“攻击一次尝试一次”。暴力激活成功教程是最流行的密码激活成功教程方法之一,然而,它不仅仅是密码激活成功教程。暴力激活成功教程还可用于发现Web应用程序中的隐藏页面和内容,在你成功之前,这种激活成功教程基本上是“激活成功教程一次尝试一次”。这种激活成功教程有时需要更长的时间,但其成功率也会更高。在本文中…

  • Android开发常见错误及技巧

    1、无法使用网络:Permissiondenied(maybemissinginternetpermission)在AndroidMainifest.xml中增加允许使用网络选项(在<

    2021年12月24日
  • scrapy环境配置_python的安装环境

    scrapy环境配置_python的安装环境本文仅供学习交流使用,如侵立删!联系方式及demo下载见文末PythonScrapy安装及相关配置环境win10Python:3.6.7Scrapy:2.4.1Python安装Scrapy安装pipinstallscrapy解决Command“pythonsetup.pyegg_info”failedwitherrorcode1问题更新pippipinstall–upgradepip问题:权限不足解决:pip

  • pycharm怎么关闭提示_嵌入自动补全

    pycharm怎么关闭提示_嵌入自动补全Pycharm是一款非常好用的Python的IDE。但就是因为它太好用了,所以对于Python新手来说,反而会导致脱离了代码提示功能,就完全不记得了函数名,大小写等,这对于新手来说是不太利于成长的。但是有一说一,Pycharm本身还是非常好用的,而且用习惯了,因此我一直想能够在学习的时候把Pycharm的代码提示功能关闭,工作的时候再打开,找了很久终于找到了T_T。当没有关闭代码提示的时候,…

发表回复

您的电子邮箱地址不会被公开。

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