Как читать товар тег с Рима? - PullRequest
0 голосов
/ 31 января 2019

Рассмотрим пример ответа из URL-адреса rss:

<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
                                           xmlns:content="http://purl.org/rss/1.0/modules/content/"
                                           xmlns:wfw="http://wellformedweb.org/CommentAPI/"
                                           xmlns:dc="http://purl.org/dc/elements/1.1/"
                                           xmlns:atom="http://www.w3.org/2005/Atom"
                                           xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
                                           xmlns:slash="http://purl.org/rss/1.0/modules/slash/">

    <channel>
        <title>MyTitle</title>
        <atom:link href="/mylink/" rel="self" type="application/rss+xml" />
        <link>somelink</link>
        <description></description>
        <lastBuildDate>Wed, 30 Jan 2019 14:00:03 +0000</lastBuildDate>
        <language>en-US</language>
        <sy:updatePeriod>hourly</sy:updatePeriod>
        <sy:updateFrequency>1</sy:updateFrequency>
        <generator>https://wordpress.org/?v=5.0.3</generator>
        <item>
            <title>item title</title>
            <link>/oitem-link</link>
            <pubDate>Wed, 30 Jan 2019 14:00:03 +0000</pubDate>
            <dc:creator><![CDATA[John]]></dc:creator>
            <category><![CDATA[Category1]]></category>
            <category><![CDATA[Amazon]]></category>
            <category><![CDATA[cleaning]]></category>
            <category><![CDATA[online shopping]]></category>
            <category><![CDATA[selling]]></category>

            <guid isPermaLink="false">/premalink</guid>
            <description><![CDATA[content]]></content:encoded>
        </item>
    </channel>
</rss>

Мне интересно прочитать тег из тега <item>.Как это сделать с библиотекой rss rome?Они предлагают:

import com.rometools.rome.feed.synd.SyndFeed;
import com.rometools.rome.io.FeedException;
import com.rometools.rome.io.SyndFeedInput;
import com.rometools.rome.io.XmlReader;

        // fetch data from URL
    SyndFeedInput input = new SyndFeedInput();
    SyndFeed feed = null;
    BufferedReader reader; // erader readed from http response body
    feed = input.build(reader);

Но у объекта feed нет API для получения коллекции items.(или эта коллекция помещена так глубоко ...)

Любые обходные пути?

PS да, я могу проанализировать это с помощью любого xml (Jaxb?) парсераили событие с регулярным выражением или xpath.Но вопрос о рим решение библиотеки.

1 Ответ

0 голосов
/ 03 февраля 2019

В документации к Риму v1.9.0 API com.rometools.rome.feed.synd.SyndFeed есть метод для получения записей / элементов: List<SyndEntry> getEntries();

...