1. 概述

RSS(Rich Site Summary 或 Really Simple Syndication)是一种 Web 内容聚合标准,让用户能在一个地方集中查看来自不同来源的最新内容。无论是喜欢的博客、新闻网站,都能通过 RSS 统一获取最新更新。

应用程序也可以利用 RSS 来读取、处理或发布信息。本文将介绍如何使用 Rome API 在 Java 中处理 RSS feed。

2. Maven 依赖

首先需要在项目中添加 Rome API 的依赖:

<dependency>            
    <groupId>rome</groupId>            
    <artifactId>rome</artifactId>            
    <version>1.0</version>
</dependency>

最新版本可在 Maven Central 查找。

3. 创建新的 RSS Feed

使用 Rome API 创建 RSS feed 时,直接使用 SyndFeed 接口的默认实现 SyndFeedImpl 即可。这个接口支持所有 RSS 版本,可以放心使用:

SyndFeed feed = new SyndFeedImpl();
feed.setFeedType("rss_1.0");
feed.setTitle("Test title");
feed.setLink("http://www.somelink.com");
feed.setDescription("Basic description");

这段代码创建了包含标题、链接和描述等标准字段的 RSS feed。***SyndFeed 还支持更多字段***,比如作者、贡献者、版权、模块、发布日期、图片、外部标记和语言等。

4. 添加条目

创建好 RSS feed 后,我们可以向其中添加条目。使用 SyndEntry 接口的默认实现 SyndEntryImpl 创建新条目:

SyndEntry entry = new SyndEntryImpl();
entry.setTitle("Entry title");        
entry.setLink("http://www.somelink.com/entry1");
    
feed.setEntries(Arrays.asList(entry));

5. 添加描述

当前条目内容太单薄,我们给它添加描述。**使用 SyndContent 接口的默认实现 SyndContentImpl**:

SyndContent description = new SyndContentImpl();
description.setType("text/html");
description.setValue("First entry");

entry.setDescription(description);

通过 setType 方法指定描述内容是纯文本还是 HTML。

6. 添加分类

RSS 条目通常通过分类进行组织,方便用户快速定位感兴趣的内容。使用 SyndCategory 接口的默认实现 SyndCategoryImpl 添加分类:

List<SyndCategory> categories = new ArrayList<>();
SyndCategory category = new SyndCategoryImpl();
category.setName("Sophisticated category");
categories.add(category);

entry.setCategories(categories);

7. 发布 Feed

现在我们已经有了一个包含条目的 RSS feed,接下来需要发布它。这里的“发布”指的是将 feed 写入输出流:

Writer writer = new FileWriter("xyz.txt");
SyndFeedOutput syndFeedOutput = new SyndFeedOutput();
syndFeedOutput.output(feed, writer);
writer.close();

⚠️ 踩坑提示:记得关闭 Writer,否则可能导致资源泄漏。

8. 读取外部 Feed

除了创建新 feed,有时还需要连接现有的 RSS 源。给定 URL 后,可以这样读取 feed:

URL feedSource = new URL("http://rssblog.whatisrss.com/feed/");
SyndFeedInput input = new SyndFeedInput();
SyndFeed feed = input.build(new XmlReader(feedSource));

关键点XmlReader 会自动处理网络连接和 XML 解析,简单粗暴。

9. 总结

本文展示了如何:

  • 创建包含条目的 RSS feed
  • 为条目添加描述和分类
  • 发布 feed 到文件
  • 读取外部 RSS 源

完整示例代码可在 GitHub 查看。


原始标题:Quick Guide to RSS with Rome