2011-11-23 92 views
2

我試圖抓住的鏈接,從該飼料的文章的列表:解析RSS時出現Jsoup bug?

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"); 

它不抓住任何鏈接。

+0

我甚至不能JSoup處理RSS提要。它給了我'未處理的內容類型應用程序/ rss + xml;字符集=異8859-1'。 org.w3c.dom和org.xml.sax解析器可以正常工作。 – styfle

回答

5

JSoup是一個HTML解析器,在HTML中,link元素被定義爲具有空的內容模型。您提供的網址似乎包含有效的xml,那麼爲什麼不嘗試實際的xml解析器或像rome這樣的提要解析器庫?

編輯:要提取使用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); 
} 
+0

那麼這意味着我不能用'doc.select(「myRandomTagName」);'?來捕獲隨機標籤? –

+0

對於HTML文件,通常可以在使用HTML中不同語義元素的任意文件上看起來不可以。查看我的編輯瞭解其他解決方案。 –