2011-03-09 109 views
2

我的RSS的理解 “HTML逃脱” 是这样的:RSS逃脱HTML

HTML:

1 < 3 

变(RSS):

1 < 3 

这样的话,应该此:

<img src="http://somehost/someimage?a=foo&amp;b=bar" /> 

成为:

&lt;img src="http://somehost/someimage?a=foo&amp;amp;b=bar" /&gt; 

(注意&amp;amp;如果是的话,这是无效的RSS?

<description> 
    ... 
    &#60;img src="http://d.yimg.com/a/p/ap/20110309/capt.f6...02-0.jpg?x=91&amp;y=130&amp;q=85&amp;sig=6oI7fIgN0izc9olfgY56vw--" /> 
</description> 

(此外,是一个事实,即关闭>逃脱坏?)

上述<描述的是我有>的问题是,一旦你解码第一实体层(XML)到达<描述>标记的内容时,您会得到一个长的CDATA,它应该是HTML。问题是<img>只有一个&,这是一个无效的实体。对于上面的大块,我得到类似<img src="....?x=1&y=2" />,这是不合法的HTML。

我只是看着闯入RSS的糟糕的HTML,或者我在这里错过了什么?

+0

''是无效的,但浏览器可以处理它,所以它是非常有可能的原始的HTML没有正确逃生的SRC属性中的&符号。非转义的'>'当然不是一件好事,但是再次,也许饲料读者不会窒息它。这两件事情都做得不好,但可以在宽容的客户中工作。 – 2011-03-09 20:32:24

+0

这大部分是我的想法......我试图让页面在http://validator.w3.org/ – Thanatos 2011-03-09 20:44:49

回答

6

你需要使用CDATA

<description><![CDATA[ <img src="http://somehost/someimage?a=foo&amp;b=bar" /> ]]> 
</description> 
+0

验证,我偶然发现这是一个好主意,所以我将它标记为接受的答案。 (这个问题有点陈旧。)可悲的是,我无法控制生成RSS的内容。这里的要点:上面的RSS(在问题中,不是这个答案)是不正确的,并且使用CDATA节(虽然不是严格要求)可能会提高数据的可读性。 – Thanatos 2011-07-07 21:25:23