`
huangqinqin
  • 浏览: 365826 次
  • 性别: Icon_minigender_2
  • 来自: 福州
社区版块
存档分类
最新评论

RssReader.java解析

 
阅读更多
RssReader.java解析:
1  触发download的click事件,调用doRSS(Url)方法。
2  在doRss(Url)中通过rssUrl构造RSSWorker线程实例。
3  在RSSWorker中处理从网络上下载xml的动作。并调用parseRSS(in, mAdapter)方法解析xml文件。
4  在parseRSS()方法中,在解析一个item后,通过mHandler.post(new ItemAdder(item))方法将解析
   后的单个item发送到mAdapter中,ItemAdder是一个线程,即将new ItemAdder(item)产生后的实例
   post到mHandler的消息队列中。通过消息队列循环的将item加入到mAdapter中。

总结:启动一个线程处理下载xml数据的动作,并解析下载xml数据。在这个现在里通过handler发送一个Message,以便更新数据。
而Handler发送Message时采用post(Runnable r)的方式,在Runnable中处理为adapter增加数据的动作,以便adapter中
的item及时更新UI显示。

方法附录:

   private void doRSS(CharSequence rssUrl) {
        RSSWorker worker = new RSSWorker(rssUrl);
        setCurrentWorker(worker);

        resetUI();
        mStatusText.setText("Downloading\u2026");

        worker.start();
    }
先调用setCurrentWorker(worker)设置当前的worker,然后调用resetUI。在resetUI中利用mAdapter适配ListView。以达到更新UI的效果。

2
    public synchronized void setCurrentWorker(RSSWorker worker) {
        if (mWorker != null) mWorker.interrupt();
        mWorker = worker;
    }
这个方法实现的功能是:中断一个线程(RSSWorker构造的),设置新的线程。


3
    void parseRSS(InputStream in, RSSListAdapter adapter) throws IOException,
            XmlPullParserException {
        XmlPullParser xpp = Xml.newPullParser();
        xpp.setInput(in, null);  // null = default to UTF-8

        int eventType;
        String title = "";
        String link = "";
        String description = "";
        eventType = xpp.getEventType();
        while (eventType != XmlPullParser.END_DOCUMENT) {
            if (eventType == XmlPullParser.START_TAG) {
                String tag = xpp.getName();
                if (tag.equals("item")) {
                    title = link = description = "";
                } else if (tag.equals("title")) {
                    xpp.next(); // Skip to next element -- assume text is directly inside the tag
                    title = xpp.getText();
                } else if (tag.equals("link")) {
                    xpp.next();
                    link = xpp.getText();
                } else if (tag.equals("description")) {
                    xpp.next();
                    description = xpp.getText();
                }
            } else if (eventType == XmlPullParser.END_TAG) {
                // We have a comlete item -- post it back to the UI
                // using the mHandler (necessary because we are not
                // running on the UI thread).
                String tag = xpp.getName();
                if (tag.equals("item")) {
                    RssItem item = new RssItem(title, link, description);
                    mHandler.post(new ItemAdder(item));
                }
            }
            eventType = xpp.next();
        }
    }
该方法是通过pull的方式解析xml文件,效率更高。
分享到:
评论

相关推荐

    安卓Android源码——RssReader.zip

    【安卓Android源码——RssReader.zip】是一个包含...综上所述,学习和分析这个RssReader源码可以深入理解Android应用程序的网络通信、数据解析、UI设计以及数据存储等多个核心概念,对于提升Android开发技能非常有益。

    j2me_RSSreader.zip_阅读器

    1. **XML解析**:由于RSS数据是XML格式,所以需要一个XML解析器来读取和理解数据结构。J2ME提供了一个轻量级的XML解析库,叫做KXML,适用于资源有限的设备。 2. **网络通信**:使用J2ME的`javax.microedition.io....

    rss(JAVA).zip_ rss_RSS_RSS Reader_RSS java downlo_java rss

    标题中的"rss(JAVA).zip_ rss_RSS_RSS Reader_RSS java downlo_java rss"揭示了这个压缩包是一个使用Java语言开发的RSS阅读器项目。RSS(Really Simple Syndication)是一种数据格式,用于发布新闻、博客和其他定期...

    java解析rss具体信息

    ### Java 解析 RSS 具体信息 #### 一、RSS 概述 RSS(Really Simple Syndication)是一种用于共享新闻和其他 Web 内容的数据格式。RSS 文件(也称为 RSS Feed 或 XML Feed)允许用户订阅网站上的最新更新。通过 ...

    RSSReader-网易手机在线更新阅读

    总的来说,"RSSReader-网易手机在线更新阅读"项目展示了Java编程语言在移动应用开发中的实际应用,涵盖了网络通信、XML解析、数据库操作、用户界面设计等多个核心领域,对于学习Android和Java开发的程序员来说,是一...

    Java 实现Rss阅读器

    Java实现的RSS阅读器是一个基于Java编程语言的软件应用,主要功能是解析并展示RSS(Really Simple Syndication)源中的内容。RSS是一种XML格式,用于发布新闻、博客和其他定期更新的网络内容。RSS阅读器可以帮助用户...

    RSS解析使用的相关JAR包

    例如,`RssReader`类用于读取RSS源,` SyndFeed`类代表一个聚合,包含各种频道信息和条目。通过这个库,开发者可以轻松地获取RSS馈送中的标题、描述、链接等信息。 2. **jdom-1.0.jar**: JDOM是一个用于处理XML文档...

    RSSReader的代码

    【RSSReader的代码】是一个基于Java Swing开发的个人RSS阅读器项目,主要用于实现RSS订阅、离线阅读以及后台同步更新等功能。在这个项目中,开发者利用Java的Swing库构建了一个用户友好的图形用户界面(GUI),使...

    RSS reader for hacksnews

    标题中的“RSS reader for hacksnews”表明这是一个专为获取HackerNews网站内容设计的RSS阅读器。RSS(Really Simple Syndication)是一种订阅源格式,它允许用户通过新闻聚合器获取网站更新,而无需直接访问每个...

    rsslib4java

    例如,通过调用`RSSReader`类的`parse`方法,可以解析一个RSS源,并将其转换为一个`RSSChannel`对象,然后可以通过遍历`RSSChannel`中的`Item`集合,获取每一条RSS条目的详细信息,如标题、链接、发布日期等。...

    Android-RSS-Reader-Library:一个 RSS 阅读器库,用于从 Web 获取 RSS 提要并将其解析为可行的对象

    您可以通过简单地调用RssReader.read(URL url)来使用 API。 这将向提供的 url 发出请求并将其解析为RssFeed和RssItem对象。 没有比这更容易的了。 以下是如何获取 RSS 提要并遍历每个项目的示例: URL url = new ...

    J2ME平台的RSSReader

    总结来说,J2ME平台的RSSReader是一个综合运用了网络通信、XML解析、数据存储、用户界面设计以及多线程和错误处理技术的典型示例。它展示了如何在资源有限的环境中构建功能丰富的移动应用。通过深入理解这些技术,...

    android下开发的rss reader(源码)

    2. XML解析库:在Android中,我们通常使用Java内置的DOM或SAX解析器,或者第三方库如`jsoup`来解析RSS feed。这个项目可能使用了其中的一种,通过解析`rssfeed.txt`文件获取数据。 三、网络请求与数据加载 1. HTTP...

    RssReader:只是一个随机项目,来自RSS提要或CSV文件的简单处理器,可以进行转换

    RSS阅读器 该项目实现了一个简单的单线程处理器,该处理器具有: 输入源 转换操作列表(可选) 输出源(可选) 处理器将: 将源解析为具有Title和...例如: java -jar RssReader.jar -i test.txt --convert="cut

    struts2+spring2+hibernate3 RSSREADER

    本项目“struts2+spring2+hibernate3 RSSREADER”是一个基于SSH框架的在线RSS阅读器,它允许用户订阅并查看RSS feed,以便于集成到自己的系统中提供RSS服务。 **Struts2** 是一个用于构建企业级Web应用程序的MVC...

    RSSReader-开源

    RSSReader的核心功能就是解析和显示这些RSS源,帮助用户高效管理订阅的新闻、博客和播客等内容。 作为开源软件,RSSReader的源代码遵循GPL(GNU General Public License)许可协议发布。GPL是一种自由软件许可证,...

    Android应用源码SimpleReader-rss聚合阅读器.zip

    1. **RSS解析**:应用通过网络请求获取RSS源的XML数据,然后使用如Java内置的DOM或第三方库如jsoup解析XML,提取出标题、摘要、链接等信息。 2. **Feed模型**:将解析得到的数据封装成自定义的Feed对象,便于数据...

    RSSReader

    3. XML解析:RSS数据是以XML格式传输的,因此RSSReader需要使用XML解析库,如JDOM、DOM4J或Java内置的SAX和DOM解析器来解析和处理RSS feed。 4. URL和HTTP通信:Java的java.net包提供了URL和URLConnection类,用于...

    java-sax-rss-reader:使用 Java SAX 的基本 Java RSS 阅读器

    只是 SAX 的 DefaultHandler 的基本实现,用于解析 RSS 2 提要。 不依赖于任何外部库,它只使用 SAX(自 Java 5 起包含在 JavaSE 中,也在 Android 上)。 使用示例 ArrayListRSSFeedStore feedStore = new ...

    RSS Viewer-开源

    2. **rssReader.bat 和 rssReader.sh**:这两个文件分别是 Windows 和 Linux 系统下的启动脚本,它们用于运行 RSS Viewer 应用程序。rssReader.bat 是批处理文件,适用于 Windows 环境,而 rssReader.sh 是 Bash ...

Global site tag (gtag.js) - Google Analytics