Перейти к основному содержимому

Краткое руководство по RSS с Римом

· 3 мин. чтения

1. Обзор

RSS (Rich Site Summary или Really Simple Syndication) — это стандарт веб-каналов, предоставляющий читателям агрегированный контент из разных мест. Пользователь может видеть, что недавно было опубликовано в его любимых блогах, новостных сайтах и т. д. — и все это в одном месте.

Приложения также могут использовать RSS для чтения, обработки или публикации информации через RSS-каналы.

В этой статье дается обзор того, как обрабатывать RSS-каналы на Java с помощью Rome API.

2. Зависимости Maven

Нам нужно добавить зависимость для Rome API в наш проект:

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

Мы можем найти последнюю версию на Maven Central .

3. Создание нового RSS-канала

Во-первых, давайте создадим новый RSS-канал с помощью Rome API , используя реализацию по умолчанию SyndFeedImpl интерфейса SyndFeed . Этот интерфейс может обрабатывать все разновидности 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-канал со стандартными полями RSS, такими как заголовок, ссылка и описание. SyndFeed дает возможность добавлять гораздо больше полей , включая авторов, участников, авторские права, модули, даты публикации, изображения, иностранные разметки и языки.

4. Добавление записи

Поскольку мы создали RSS-канал, теперь мы можем добавить в него запись. В приведенном ниже примере мы используем реализацию по умолчанию SyndEntryImpl интерфейса SyndEntry для создания новой записи:

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

feed.setEntries(Arrays.asList(entry));

5. Добавление описания

Поскольку наша запись пока пуста, давайте добавим к ней описание. Мы можем сделать это, используя реализацию SyndContentImpl интерфейса SyndContent по умолчанию :

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

entry.setDescription(description);

С помощью метода setType мы указали, что содержимое нашего описания будет текстовым или HTML.

6. Добавление категории

Записи RSS часто классифицируются по категориям, чтобы упростить задачу поиска интересующих нас записей. Давайте посмотрим, как мы можем добавить категорию к записи , используя реализацию по умолчанию SyndCategoryImpl интерфейса SyndCategory :

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

entry.setCategories(categories);

7. Публикация ленты

У нас уже есть RSS-канал с записью. Теперь мы хотим его опубликовать. Для целей этой статьи под публикацией мы подразумеваем запись ленты в поток:

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

8. Чтение внешнего канала

Мы уже знаем, как создать новый канал, но иногда нам просто нужно подключиться к существующему.

Давайте посмотрим, как читать/загружать фид, зная его URL:

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

9. Заключение

В этой статье мы показали, как создать RSS-канал с некоторыми записями, как опубликовать канал и как читать внешние каналы.

Как всегда, вы можете ознакомиться с примерами, представленными в этой статье , на GitHub .