0

我正在尝试解析一个流行的德国新闻网站(taz.de)的某个 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 解析器。

4

1 回答 1

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 解析器无法为您提供您正在寻找的文本。你有两个选择:

  • 将字符串包装在 eg 中<foo>...</foo>,将传递给 XML 解析器,然后提取根元素的所有文本子元素。
  • 将字符串包装成类似 的<html><title></title><body>...</body></html>内容,通过 HTML 解析器(或任何 tag-soup-du-jour 解析器)传递,然后提取 body 元素的所有文本子元素。

我想知道如果描述包含 taz.de 是否会中断]]>...

于 2013-03-28T04:03:17.547 回答