«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.