Я пытаюсь разобрать an RSS field с использованием библиотеки Java XOM. URL-адрес изображения каждой записи сохраняется как атрибут для элемента <img>
, как показано ниже. Невозможно проанализировать атрибут элемента с помощью XOM
<rss version="2.0">
<channel>
<item>
<title>Decision Paralysis</title>
<link>https://xkcd.com/1801/</link>
<description>
<img src="https://imgs.xkcd.com/comics/decision_paralysis.png"/>
</description>
<pubDate>Mon, 20 Feb 2017 05:00:00 -0000</pubDate>
<guid>https://xkcd.com/1801/</guid>
</item>
</channel>
</rss>
Попытка разобрать <img src="">
с .getFirstChildElement("img")
только возвращает нулевой указатель, что делает мой крах кода при попытке извлечь <img src= ...>
. Почему моя программа не читается в элементе <img>
и как я могу прочитать ее правильно?
import nu.xom.*;
public class RSSParser {
public static void main() {
try {
Builder parser = new Builder();
Document doc = parser.build ("https://xkcd.com/rss.xml");
Element rootElement = doc.getRootElement();
Element channelElement = rootElement.getFirstChildElement("channel");
Elements itemList = channelElement.getChildElements("item");
// Iterate through itemList
for (int i = 0; i < itemList.size(); i++) {
Element item = itemList.get(i);
Element descElement = item.getFirstChildElement("description");
Element imgElement = descElement.getFirstChildElement("img");
// Crashes with NullPointerException
String imgSrc = imgElement.getAttributeValue("src");
}
}
catch (Exception error) {
error.printStackTrace();
System.exit(1);
}
}
}
Это не решит проблему неспособности выполнить синтаксический анализ 'img src =' –