2013-03-20 80 views
0

我試圖解析一個受歡迎的德國新聞網站(taz.de)的某個RSS提要。不幸的是,他們的描述標籤不僅包含純文本,但任何東西的混合物,包括圖片,鏈接等RaptureXML解析某個RSS提要的問題

<description> 
    <![CDATA[<a href="http://www.taz.de/10-Jahre-nach-dem-Irakkrieg/!113046/"><img align="left" style="margin-right:5px;" src="/uploads/images/152x76/18032013_Bush_Irakkrieg_rtr.jpg" border="0" width="152" height="76" /></a>Das Land ist von einem funktionierenden Rechtsstaat weit entfernt. Zehn Jahre nach dem Irakkrieg zeigt sich eine niederschmetternde Bilanz. <a href="http://www.taz.de/10-Jahre-nach-dem-Irakkrieg/!113046/">mehr...</a>]]> 
</description> 

我唯一感興趣的事情是文本Das Land ist von einem funktionierenden Rechtsstaat weit entfernt. Zehn Jahre nach dem Irakkrieg zeigt sich eine niederschmetternde Bilanz.我會怎麼做,在一個有效的方式(沒有可怕的字符串操作)?由於沒有屬性名稱,我想我被搞砸了?我使用的是RaptureXML,但如果這個問題有更好的庫,我會切換xml解析器。

回答

0

恐怕比這更糟糕:「CDATA」部分是指描述(模周圍的空白)是文字字符串

<a href="http://www.taz.de/10-Jahre-nach-dem-Irakkrieg/!113046/"><img align="left" style="margin-right:5px;" src="/uploads/images/152x76/18032013_Bush_Irakkrieg_rtr.jpg" border="0" width="152" height="76" /></a>Das Land ist von einem funktionierenden Rechtsstaat weit entfernt. Zehn Jahre nach dem Irakkrieg zeigt sich eine niederschmetternde Bilanz. <a href="http://www.taz.de/10-Jahre-nach-dem-Irakkrieg/!113046/">mehr...</a> 

即您的代碼段相當於

<description> 
    &lt;a href="http://www.taz.de/10-Jahre-nach-dem-Irakkrieg/!113046/"&gt;&lt;img align="left" style="margin-right:5px;" src="/uploads/images/152x76/18032013_Bush_Irakkrieg_rtr.jpg" border="0" width="152" height="76" /&gt;&lt;/a&gt;Das Land ist von einem funktionierenden Rechtsstaat weit entfernt. Zehn Jahre nach dem Irakkrieg zeigt sich eine niederschmetternde Bilanz. &lt;a href="http://www.taz.de/10-Jahre-nach-dem-Irakkrieg/!113046/"&gt;mehr...&lt;/a&gt; 
</description> 

符合XML解析器不能給你你正在尋找的文本。您有兩種選擇:

  • 將字符串包裹在例如<foo>...</foo>,通過通過XML解析器,並拉出根元素的所有文本子元素。
  • 將字符串換成<html><title></title><body>...</body></html>之類的字符串,通過一個HTML解析器(或任何標籤 - 湯 - 果醬解析器)傳遞它,並提取出body元素的所有文本子元素。

不知taz.de打破,如果描述包含]]> ...