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 查看。