Я пытаюсь работать с RSS и анализировать его. Я нашел Рим и пытаюсь работать с ним по коду:
private SyndFeed parseFeed(String url) throws IllegalArgumentException, FeedException, IOException {
return new SyndFeedInput().build(new XmlReader(new URL(url)));
}
public Boolean processRSSContent(String url) {
try {
SyndFeed theFeed = this.parseFeed(url);
SyndEntry entry = theFeed.getEntries().get(0);
ZonedDateTime entryUtcDate = ZonedDateTime.ofInstant(entry.getPublishedDate().toInstant(), ZoneOffset.UTC);
String entryTitle = entry.getTitle();
String entryText = entry.getDescription().getValue();
}
catch (ParsingFeedException e) {
e.printStackTrace();
return false;
}
catch (FeedException e) {
e.printStackTrace();
return false;
}
catch (IOException e) {
e.printStackTrace();
return false;
}
}
На некоторых каналах, таких как http://feeds.bbci.co.uk/news/world/rss.xml все работает нормально, но на некоторых других каналах типа http://habrahabr.ru/rss/ я получаю сообщение об ошибке:
Invalid XML: Error on line 5: The element type "meta" must be terminated by the matching end-tag "</meta>".
com.rometools.rome.io.ParsingFeedException: Invalid XML: Error on line 5: The element type "meta" must be terminated by the matching end-tag "</meta>".
Я просмотрел содержимое этой ссылки, и XML действительно странный. Но это популярный сайт, и я получил эту ошибку на некоторых других сайтах, поэтому я не думаю, что проблема в XML. Что я сделал не так? Как читать эти RSS-каналы?