2011-09-01 66 views
2

我需要爲我的網站製作一個RSS訂閱源。問題在於內容已被導入幷包含內聯樣式和其他標記。我看了各種方法,但我不能完全刪除它,其中一些停止我的飼料驗證。周圍,​​似乎工作使用CDATA驗證RSS源的操作?

一個工作是這樣的:

<![CDATA[ <description>My Content here </description> ]]> 

。據我讀這將停止從被XML解析,這就是爲什麼它會驗證確定的內容。我看了幾位讀者,看起來很好,但是這種方法有風險/缺點嗎?我不太瞭解這些含義,所以我很欣賞任何關於我可以執行的測試的建議或信息。

感謝

回答

3

這是一個完全合理的做法,但你要注意,你應該使用這樣的:

<description><![CDATA[My Content here]]></description> 

...而不是:

<![CDATA[ <description>My Content here </description> ]]> 

...作爲<description>元素是RSS規範的一部分,因此應正確顯示在RSS中,而不是作爲文本轉義。

如果您打算在您的titledescription中包含非RSS內容(通常爲HTML),特別是在用戶生成的內容可能包含各種標記或無效標記時,將整個內容標記爲字符數據像這樣肯定是要走的路。

RSS閱讀器通常期待並應對description元素中存儲爲CDATA的HTML,而他們使用的XML解析器(以及任何其他解析RSS的解析器)可能對通過包含可能創建的格式錯誤的XML非常敏感HTML標籤,意外的實體或<description>文本中的單個「<」,而沒有轉義。

使用您的XML庫提供的任何方法將內容作爲CDATA插入,而不僅僅是用<![CDATA[]]>手動包裝它;這樣,所有的想法(如果內容包括]]>?會發生什麼?)將爲您完成。