2013-03-20 63 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打破,如果描述包含]]> ...