解析RSS时的Jsoup错误?

Sam*_* Hu 2 java rss jsoup

我正在尝试从此Feed获取文章的链接列表:

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

即标签自我关闭,如果我这样做

Elements items = doc.select("link");
Run Code Online (Sandbox Code Playgroud)

它没有抓住任何链接.

Jör*_*ann 5

JSoup是一个HTML解析器,在HTML中,link元素被定义为具有空内容模型.您提供的URL似乎包含有效的xml,那么为什么不尝试实际的xml解析器或像rome这样的feed解析器库?

编辑:要使用JDK的Xpath实现从文件中提取链接,您可以使用如下代码:

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);
}
Run Code Online (Sandbox Code Playgroud)