当前位置:天才代写 > tutorial > JAVA 教程 > Java实现Web版RSS阅读器(三)理会在线Rss订阅

Java实现Web版RSS阅读器(三)理会在线Rss订阅

2017-11-02 08:00 星期四 所属: JAVA 教程 浏览:574

副标题#e#

上篇博客《 Web版RSS阅读器(二)——利用dTree树形加载rss订阅分组列表》已经写到读取rss订阅列表了,本日就说一下,当获取一条在线rss订阅的信息,怎么去理会它,从而获取文章或资讯。

首先说一下rss的版本。许多人都说rss,可是有相当一部门人,都不知道rss居然不但一种名目。我们常用的订阅名目有Rss和Atom 2种名目。Rss有版本从v0.9一直到此刻的v2.0,Atom最新的版本则是1.0。

DeveloperWorks有一篇文章《利用 RSS 和 Atom 实现新闻连系》提及两者的相似点与差异点:

RSS 和 Atom 摘要的相似点

每个摘要文件实际上代表一个通道。它包括通道标题、链接、描写、作者等等。通道信息提供关于摘要的根基信息。通道信息之后是一些项。每项代表一篇可以从摘要阅读器阅读的真实的新闻可能文章。凡是环境下,每项包括有标题、链接、更新时间和摘要信息。

RSS 和 Atom 摘要的差异点

参考 RSS 2.0 and Atom 1.0, Compared,回首 RSS 和 Atom 的差异点。

Java实现Web版RSS阅读器(三)剖析在线Rss订阅

RSS 和 Atom 具有相似的基于 XML 的名目。它们的根基布局是沟通的,只在节点的表达式上有一点区别。

在Rss尺度名目:

<!-- XML版本和字符集 -->
 <?xml version="1.0"?>  
 <!-- RSS版本 -->
 <rss version="2.0">  
 <!-- 以下为频道信息及新闻资讯或文章列表 -->
 <channel>  
  <!-- 频道总体信息:开始 -->
  <!-- 频道标题 -->
  <title>Lift Off News</title>  
  <!-- 频道链接的总地点 -->
  <link>http://liftoff.msfc.nasa.gov/</link>  
  <!-- 频道描写文字 -->
  <description>Liftoff to Space Exploration.</description>  
  <!-- 频道利用的语言(zh-cn暗示简体中文) -->
  <language>en-us</language>  
  <!-- 频道宣布的时间 -->
  <pubDate>Tue, 10 Jun 2003 04:00:00 GMT</pubDate>  
  <!-- 频道最后更新的时间-->
  <lastBuildDate>Tue, 10 Jun 2003 09:41:01 GMT</lastBuildDate>  
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>  
  <!-- 频道生成器 -->
  <generator>Weblog Editor 2.0</generator>  
  <ttl>5</ttl>  
  <!-- 频道总体信息:竣事 -->
  <!-- 每条RSS新闻信息都包括在item节点中, -->
  <item>  
  <!-- 新闻标题 -->
  <title>Star City</title>  
  <!-- 新闻链接地点 -->
  <link>http://liftoff.msfc.nasa.gov/news/2013/news-starcity.asp</link>  
  <!-- 新闻内容扼要描写 -->
  <description>How do Americans get ready to work with Russians aboard the  
  International Space Station? They take a crash course in culture, language  
  and protocol at Russia's Star City.</description>  
  <!-- 新闻宣布时间 -->
  <pubDate>Tue, 03 Jun 2003 09:39:21 GMT</pubDate>  
  <!-- 新闻目次 -->
  <category>IT</category>  
  <!-- 新闻作者 -->
  <author>bill</author>  
  <guid>http://liftoff.msfc.nasa.gov/2003/06/03.html#item573</guid>  
  </item>  
  <!-- 第二条新闻信息 -->
  <item>  
  <title>Space Exploration</title>  
  <link>http://liftoff.msfc.nasa.gov/</link>  
  <description>Sky watchers in Europe, Asia, and parts of Alaska and Canada  
  will experience a partial eclipse of the Sun on Saturday, May 31st.</description>  
  Fri, 30 May 2003 11:06:42 GMT</pubDate>  
  <guid>http://liftoff.msfc.nasa.gov/2003/05/30.html#item572</guid>  
  </item>    
  </channel>  
 </rss>


#p#副标题#e#

Atom 1.0的名目:

<?xml version="1.0" encoding="utf-8"?>  
<!-- ATOM版本 -->
<feed xmlns="http://www.w3.org/2005/Atom"">  
    <!-- 频道标题 -->
 <title>Schema Web</title>  
    <!-- 频道链接的总地点 -->
 <link rel="alternate" type="text/html" href="http://stanzaweb.art/" />  
    <!-- 最新修改时间-->
 <modified>2004-06-01T10:11:12Z</modified>  
    <!-- 频道作者 -->
 <author>  
        <!-- 昵称 -->
  <name>Uche Ogbuji</name>  
 </author>  
    <!-- 以下是新闻资讯或文章列表 -->
 <entry>  
    <!-- 新闻标题 -->
  <title>Welcome to Stanza Web</title>  
    <!-- 新闻作者 -->
  <author>  
          <!-- 作者昵称 -->
   <name>龙轩</name>  
         <!-- 主页 -->
         <uri>http://www.cnblogs.com/longxuan/</uri>  
  </author>  
      <!-- 文章毗连 -->
  <link rel="alternate" type="text/html" href="http://stanzaweb.art/2004-06-01/welcome" />  
      <!-- 最新修改时间 -->
  <modified>2004-06-01T10:11:12Z</modified>  
      <!-- 文章内容 -->
  <content type="html">  
   <div >  
    <p>Welcome to  
     <a href="http://stanzaweb.art/">Stanza Web</a>.  
     Come back often to keep track of the best in modern poetry.  
    </p>  
    <p>This site is powered by  
      <a href="http://atomenabled.org">Atom</a>  
    </p>  
   </div>  
  </content>  
 </entry>  
</feed>

大部门新闻或博客网站都利用的是rss,虽然Atom也占有部门市场。好比博客园就是用的Atom,而CSDN则用的是RSS。

相识了这些今后,就可以开始理会Rss了。

#p#分页标题#e#

在网上找了一下开源的包,选了2款常用的都尝试了一下,一个是Rome.jar,一个是rsslib4j.jar。二者的区别我就不多先容了,有乐趣了可以去百度一下。rsslib4j 小巧,兼容性好,可是此刻只支持理会rss 0.9x ,1.0 和 2.0,临时对付atom无能为力。rsslib4j的开源主页:http://sourceforge.net/projects/rsslib4j/。有什么需要的,可以在主页举办下载。

#p#副标题#e#

在WebRoot/lib中引用rsslib4j-0.2.jar,在src的com.tgb.rssreader.manager包中新建一个类Rsslib4jReadRss,贴出代码:

package com.tgb.rssreader.manager;  

import java.net.URL;
import java.net.URLConnection;
import java.util.List;

import org.gnu.stealthp.rsslib.RSSChannel;
import org.gnu.stealthp.rsslib.RSSHandler;
import org.gnu.stealthp.rsslib.RSSImage;
import org.gnu.stealthp.rsslib.RSSItem;
import org.gnu.stealthp.rsslib.RSSParser;

public class Rsslib4jReadRss {

//这里界说一个在线的rss摘要的地点(对应我的网易博客)
//

由于文章太多,在Console中测试时,大概会看不到后头的结果,所以我只让措施读取了一个文章摘要(for轮回次数修改为1),结果图如下:

Java实现Web版RSS阅读器(三)剖析在线Rss订阅

在理会网易博客时,还算委曲可以胜任,可是在理会CSDN博客时,就会报错"Server returned HTTP response code: 403 for URL: http://xxxxxx",这是因为CSDN博客,拒绝java作为客户端举办会见其处事器。并且在理会个体信息时,会呈现null值。

那怎么办呀?别着急,下篇博文,各人跟我一起修改rsslib4j,做本身的rsslib4j。敬请等候!

 

    关键字:

天才代写-代写联系方式