RSS的基本使用 - rsslibj

RSS,大家应该都见过的,有的同学可能经常使用,在这里简单分享一下,对RSS的理解。


1. RSS简介

        RSS(简易信息聚合)是一种消息来源格式规范,用以聚合经常发布更新数据的网站,例如博客文章、新闻、音频或视频的网摘。RSS文件(或称做摘要、网络摘要、或

频更新,提供到频道)包含了全文或是节录的文字,再加上发用者所订阅之网摘布数据和授权的元数据。

       Really Simple Syndication“聚合真的很简单”就是RSS的英文原意。把新闻标题、摘要(Feed)、内容按照用户的要求,“送”到用户的桌面就是RSS的目的。RSS一词有时

候仍大体上意为社会性书签,包括了各种RSS的不同格式。例如,Blogspace对使用网摘于一集成器内之动作标为RSS info和RSS reader。虽然它的第一个句子就包含了明确

的Atom格式:“RSS和Atom文件能够用简单的格式从网站更新信息至你的电脑!”


        RSS摘要可以借由RSS阅读器、feed reader或是aggregator等网页或以桌面为架构的软件来阅读。标准的XML文件式可允许信息在一次发布后通过不同的程序阅览。用户

借由将网摘输入RSS阅读器或是用鼠标点取浏览器上指向订阅程序的RSS小图标之URI(非通常称为URL)来订阅网摘。RSS阅读器定期检阅是否有更新,然后下载给监看用户

界面。


----摘自“维基百科”


RSS的基本格式:

<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
 <title>RSS Title</title>
 <description>This is an example of an RSS feed</description>
 <link>http://www.someexamplerssdomain.com/main.html</link>
 <lastBuildDate>Mon, 06 Sep 2010 00:01:00 +0000 </lastBuildDate>
 <pubDate>Mon, 06 Sep 2009 16:20:00 +0000 </pubDate>
 <ttl>1800</ttl>
 
 <item>
  <title>Example entry</title>
  <description>Here is some text containing an interesting description.</description>
  <link>http://www.wikipedia.org/</link>
  <guid>unique string per item</guid>
  <pubDate>Mon, 06 Sep 2009 16:20:00 +0000 </pubDate>
 </item>
 
</channel>
</rss>

关于RSS的格式详细说明可以看这里:

http://cyber.law.harvard.edu/rss/rss.html

2. 解析RSS

      先说一下,我们已经知道一个RSS地址,怎样解析她。

我们以人民网的:http://www.people.com.cn/rss/politics.xml   为例。


	public String parseRss() throws Exception {
		//根据URL解析RSS,转换字符串
		URL url = new URL(rssUrl);
		InputStream inputstream = url.openStream();
		BufferedReader reader = new BufferedReader(new InputStreamReader(inputstream));
		
		StringBuilder data = new StringBuilder();
		String line = null;
		while( (line = reader.readLine()) != null ) {
			data.append(line);
		}
		
		reader.close();
		inputstream.close();
		//解析字符串
		parse(data.toString());
		
		return SUCCESS;
	}

我们将传过来的URL,读取一行一行读取到data里,然后,使用rsslibj解析

	private void parse(String data) throws ParseException {
		StringReader reader = new StringReader(data);
		// 创建RSS阅读对象的
		RSSReader rssReader = new RSSReader();
		// 设置读取内容
		rssReader.setReader(reader);
		
		channel = rssReader.getChannel();
	}

	private String rssUrl;	//RSS地址
	private Channel channel;	//RSS实体

通过这个Channel,我们就可以将RSS中的信息读取出来了。

	<h3>解析结果</h3>
	描述:<s:property value="channel.description"/><br/>
	链接: <a target="_blank" href="<s:property value="channel.link"/>"> <s:property value="channel.description"/> </a> <br/>
	
	内容:<br/>
	<s:iterator value="channel.items" id="item">
		题目:<span><s:property value="title"/></span> <br/>
		作者:<s:property value="dcCreator"/><br/>
		描述:<s:property value="description"/><br/>
		链接: <a href="<s:property value="link"/>"> <s:property value="title"/> </a> <br/>
		<br/>
	</s:iterator>

解析之后,是这样的:

RSS的基本使用 - rsslibj_第1张图片


PS:这里简要说了一下,以后如果用到了,会再深入学习。

3. 生成RSS

我们已经可以简单的实现解析了,我们下面在学习一下怎样生成。

	public String createRss() throws Exception{
		String rssData = create();
		
		response.setContentType("text/xml;charset=utf-8");
		PrintWriter out = response.getWriter();
		out.println(rssData);
		out.flush();
		out.close();
		
		return NONE;
	}

	private String create() throws InstantiationException, IllegalAccessException, ClassNotFoundException {
		Channel channel = new Channel();
		
		channel.setDescription("哈,我就想测试一下");
		channel.setLink("http://localhost/");
		channel.setTitle("My Channel");
		channel.setImage("http://localhost/", "The Channel Image", "http://localhost/foo.jpg");
		channel.setTextInput("http://localhost/search", "Search The Channel Image", "The Channel Image", "s");
		
		channel.addItem("http://localhost/item1", "The First Item covers details on the first item>", "The First Item")
				.setDcContributor("Joseph B. Ottinger");
		channel.addItem("http://localhost/item2", "The Second Item covers details on the second item",
				"The Second Item").setDcCreator("Jason Bell");

		return channel.getFeed("2.0");
	}

显示界面是这样的:

RSS的基本使用 - rsslibj_第2张图片


好了,就简单说这么多,有待以后的深入研究。



你可能感兴趣的:(rss,新闻,阅读器)