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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • JShell介绍「建议收藏」

    JShell介绍「建议收藏」文章目录一、JShell是什么?二、为什么使用JShell三、使用步骤1.安装jdk9.0以上版本2.cmd命令行中进入JShell3.就可以直接敲击单行代码了引用一、JShell是什么?JavaShell工具(JShell)是用于学习Java编程语言和原型化Java代码的交互式工具。该工具使用命令行运行。二、为什么使用JShell使用JShell,可以一次输入一个程序元素,立即查看结果,并根据需要进行调整。三、使用步骤1.安装jdk9.0以上版本例如我的是15.0版本:2.cm

    2022年10月31日
    0
  • 【谷粒商城】全网最全笔记(1/4)「建议收藏」

    【谷粒商城】全网最全笔记(1/4)「建议收藏」本文重点记录老师讲的话和一些配置流程,笔记中有的内容尽量少记录。边看视频变更新,我尽快更新。

    2022年6月13日
    24
  • IIS7 beta FREE WEBHOSTING FREE HOSTING FOR ASP.NET 2.0 IIS7[通俗易懂]

    IIS7 beta FREE WEBHOSTING FREE HOSTING FOR ASP.NET 2.0 IIS7[通俗易懂]FreeIIS7BetaHostingMaximumASPMaximumASPisproudtobethefirstHosterpartneredwithMicrosofttohelpcuttingedgedev…

    2022年10月8日
    0
  • 简图记录-曾国藩家训 观后感「建议收藏」

    简图记录-曾国藩家训 观后感「建议收藏」简图记录 总结~材料 郦波教授的百家讲坛 和 部分相关书籍  一个人疑惑的时候,总是希望通求知如过阅读找到自己的答案,读史可以使人明智,历史总是有借鉴意义,相对于空谈鸡汤无疑更有说服力。我认为向周围的人学习是个人成长一个非常重要的手段,周围的人都是真实的而且在一定范围是可交流讨论的,相对一些当代的名人 他们的事迹往往都是经过加工 或 胡编 鸡汤意味更浓一些,那么另外一条路就是找一些古代的贤…

    2022年6月4日
    30
  • DataFormatString格式

    DataFormatString格式DataFormatString=”{0:F}”格式字符串输入结果”{0:C}”12345.6789$12,345.68″{0:C}”-12345.6789($12,345.68)”{0:D}”1234512345″{0:D8}”12345…

    2022年10月30日
    0
  • 编程语言中,取余和取模的区别

    编程语言中,取余和取模的区别编程语言中,取余和取模的区别

    2022年4月24日
    43

发表回复

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

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