Jsoup ошибка при разборе RSS? - PullRequest
2 голосов
/ 23 ноября 2011

Я пытаюсь получить список ссылок на статьи из этого канала:

http://rss.cbc.ca/lineup/topstories.xml

Однако, когда Jsoup читает его, ссылки в тегах <link>http://www.cbc.ca/news/?cmp=rss</link>становится <link />http://www.cbc.ca/news/?cmp=rss

Т.е. тег self закрывается, и если я делаю

Elements items = doc.select("link");

, он не захватывает ни одну из ссылок.

1 Ответ

5 голосов
/ 23 ноября 2011

JSoup - это анализатор HTML, в HTML элемент link определен как пустая модель содержимого.Похоже, что указанный вами URL содержит действительный xml, так почему бы вам не попробовать настоящий xml-анализатор или библиотеку синтаксического анализатора каналов, например rome ?

Edit: ToИзвлеките ссылки из файла, используя реализацию Xpath JDK. Вы можете использовать код, подобный следующему:

XPathFactory xpf = XPathFactory.newInstance();
XPath xp = xpf.newXPath();
InputSource is = new InputSource("http://rss.cbc.ca/lineup/topstories.xml");
NodeList nodes = (NodeList)xp.evaluate("//link", is, XPathConstants.NODESET);
for (int i=0, len=nodes.getLength(); i<len; i++) {
    Node node = nodes.item(i);
    String link = node.getTextContent();
    System.out.println(link);
}
...