什么是RSS
RSS(Really Simple Syndication)
是一种描述和同步网站内容的格式,是使用最广泛的 XML
应用。RSS
搭建了信息迅速传播的一个技术平台,使得每个人都成为潜在的信息提供者。发布一个 RSS
文件后,这个 RSS Feed
中包含的信息就能直接被其他站点调用,而且由于这些数据都是标准的 XML
格式,所以也能在其他的终端和服务中使用,是一种描述和同步网站内容的格式。
为什么要使用RSS
举个例子,如果用户获取到了网站的 RSS
文件,就可以获取该网站最新发布的文章信息。用户可以使用一些聚合功能来阅读这些信息,我就喜欢使用自建的 FreshRSS
系统订阅博友和新闻的 RSS
,由此可见, RSS
对网站的推广具有很大的作用,所以网站必须提供标准的 RSS
文件。 RSS
协议有很多版本,0.9,1.0,2.0,现在使用较多的应该是2.0了。
什么是ROME
ROME
是一组 Atom/RSS
工具类,它用 Java
来操作大部份 RSS
。ROME
可能是目前最完善的开源聚合工具, ROME
支持绝大多数的 RSS
协议。
ROME使用实例
项目 POM.xml
中引入 maven
依赖
<dependency>
<groupId>rome</groupId>
<artifactId>rome</artifactId>
<version>1.0RC2</version>
</dependency>
下面部分代码是整合“十年之约”的部分代码,仅供示例:
// 生成Channel对象,并选择一个协议标准
Channel channel = new Channel("rss_2.0");
// 网站标题
channel.setTitle("十年之约聚合订阅");
// 网站描述
channel.setDescription("十年之约聚合订阅由青山小站提供服务");
// 网站主页链接
channel.setLink("https://blog.yanqingshan.com/");
// RSS文件编码
channel.setEncoding("utf-8");
// RSS使用的语言
channel.setLanguage("zh-cn");
//最后生成时间
channel.setLastBuildDate(new Date());
//Rss文档
channel.setDocs("https://cyber.harvard.edu/rss/rss.html");
//创建者
channel.setGenerator("TenYearsRSS v1.0.0");
//编辑管理员
channel.setManagingEditor("qingshanking@vip.qq.com");
//网站管理员
channel.setWebMaster("qingshanking@vip.qq.com");
// time to live的简写,在刷新前当前RSS在缓存中可以保存多长时间(分钟)
channel.setTtl(5);
// 版权声明
channel.setCopyright("数据依旧来源于十年之约聚合订阅,本站仅使用此数据,其版权归原作者所有。");
// RSS发布时间
channel.setPubDate(new Date());
// 这个list对应rss中的item列表
List<Item> items = new ArrayList<Item>();
// 新建Item对象,对应rss中的<item></item>
Item item = new Item();
// 对应<item>中的<author></author>
item.setAuthor("hxliu");
// 对应<item>中的<title></title>
item.setTitle("新闻标题");
// GUID=Globally Unique Identifier
// 为当前新闻指定一个全球唯一标示,这个不是必须的
item.setGuid(new Guid());
// 这个<item>对应的发布时间
item.setPubDate(new Date());
// 代表<item>节点中的<comments></comments>
item.setComments("注释");
// 新建一个Description,它是Item的描述部分
Description description = new Description();
// <description>中的内容
description.setValue("新闻主题");
// 添加到item节点中
item.setDescription(description);
// 代表一个段落<item></item>,
items.add(item);
channel.setItems(items);
// 用WireFeedOutput对象输出rss文本
WireFeedOutput out = new WireFeedOutput();
评论 (0)