长版:
那些熟悉 RSS 家族标准化噩梦的人可能知道 RSS 不会为您提供信息,例如“描述”元素 仅包含纯文本或 html 或 xhtml。
我目前使用 ROME-API 将各种 RSS 版本转换为 Atom 1.0。 Rome-API 会很高兴 解析 RSS 并稍后输出 Atom 提要。幸运的是,Atom 有一种方法可以声明包含文本、html 或 xhtml 的摘要。
例子。 订阅:
<item>
<link>http://www.schwarzwaelder-bote.de/wm?catId=79039&artId=14737088&rss=true</link>
<title>Analyse: Winter reißt Löcher in Straßen und Kassen</title>
<description><img src="http://www.schwarzwaelder-bote.de/cms_images/swol/dpa-InfoLine_rs-images/20100306/1192a_24128948.thumbnail.jpg" alt="Schlagloch" title="" border="0">&nbsp;& ;nbsp;&nbsp;Berlin (dpa) - Von Schnee und Eis befreit sind Deutschlands Straßen, und jetzt geht es ans große Aufräumen....</description>
</item>
变成: 原子:
<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&artId=14737088&rss=true" />
<author>
<name />
</author>
<id>http://www.schwarzwaelder-bote.de/wm?catId=79039&artId=14737088&rss=true</id>
<summary type="text"><img src="http://www.schwarzwaelder-bote.de/cms_images/swol/dpa-InfoLine_rs-images/20100306/1192a_24128948.thumbnail.jpg" alt="Schlagloch" title="" border="0">&nbs p;&nbsp;&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 之类的提要阅读器将摘要的内容呈现为文本 --> 你会看到所有的 html 源代码。
精简版:如何检测描述元素的内容是否为 (X)HTML,以便设置正确的类型属性?
最佳答案
嘿,我爷爷曾经读过那份报纸:)
检测 HTML 的一种非常原始的方法可能是从源代码中剥离任何标记(在 PHP 中,您可以使用 strip_tags()
执行此操作)并查看结果是否与原始标记不同。关于 RSS 的困惑,您可能必须运行两次,一次在 html_entity_decode()
之后,不过,这样实体编码和非编码标签都可以可靠地检测到。
通常,这应该会产生中途可靠的结果,但后来我看到了 ö
:
<title>Analyse: Dem Mutigen geh<F6>rt die Urne</title>
这是什么编码方式?我以前从没见过。那当然会被(错误地)解释为 HTML 标记。这是特定于原子的东西吗?
关于java - 区分 RSS 描述元素中的 HTML/XHTML 和纯文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2396902/