区分RSS描述元素中的HTML / XHTML和纯文本

时间:2010-03-07 16:08:45

标签: java html rss rome atom-feed

长版:

那些熟悉RSS家族标准化噩梦的人可能知道 如果例如“description”元素,RSS不会为您提供信息 仅包含纯文本或html或xhtml。

我目前使用ROME-API将各种RSS版本转换为Atom 1.0。 Rome-API很乐意 解析RSS,然后输出Atom提要。幸运的是,Atom有一种方法来声明一个包含text,html或xhtml的摘要。

实施例。 RSS:

 <item>
       <link>http://www.schwarzwaelder-bote.de/wm?catId=79039&amp;artId=14737088&amp;rss=true</link>
        <title>Analyse: Winter reißt Löcher in Straßen und Kassen</title>
        <description>&lt;img src="http://www.schwarzwaelder-bote.de/cms_images/swol/dpa-InfoLine_rs-images/20100306/1192a_24128948.thumbnail.jpg" alt="Schlagloch" title="" border="0"&gt;&amp;nbsp;&amp    ;nbsp;&amp;nbsp;Berlin (dpa) - Von Schnee und Eis befreit sind Deutschlands Straßen, und jetzt geht es ans große Aufräumen....</description>
      </item>

变为: ATOM:

<entry>
  <title>Analyse: Winter reißt Löcher in Straßen und Kassen</title>
  <link rel="alternate" href="http://www.schwarzwaelder-bote.de/wm?catId=79039&amp;artId=14737088&amp;rss=true" />
  <author>
    <name />
  </author>
  <id>http://www.schwarzwaelder-bote.de/wm?catId=79039&amp;artId=14737088&amp;rss=true</id>
  <summary type="text">&lt;img src="http://www.schwarzwaelder-bote.de/cms_images/swol/dpa-InfoLine_rs-images/20100306/1192a_24128948.thumbnail.jpg" alt="Schlagloch" title="" border="0"&gt;&amp;nbs    p;&amp;nbsp;&amp;nbsp;Berlin (dpa) - Von Schnee und Eis befreit sind Deutschlands Straßen, und jetzt geht es ans große Aufräumen....</summary>
</entry>

问题是type="text"告诉像Firefox这样的Feed阅读器将摘要的内容呈现为文本 - &gt;你可以看到所有的html-source。

短版:如何检测说明元素的内容是(X)HTML,以便我可以设置正确的类型属性?

1 个答案:

答案 0 :(得分:0)

嘿,我爷爷曾经读过那份报纸:)

检测HTML的一种非常原始的方法可能是从源中剥离任何标记(在PHP中,您将使用strip_tags()执行此操作)并查看结果是否与原始文件不同。参考RSS的混乱,你可能不得不在html_entity_decode()之后运行两次,一次运行一次,因此可以可靠地检测实体编码和非编码标签。

通常情况下,这会产生中途可靠的结果,但之后我看到了ö

   <title>Analyse: Dem Mutigen geh<F6>rt die Urne</title>

这是什么样的编码方法?我以前从未见过这个。那当然会被(错误地)解释为HTML标签。这是原子特有的吗?