0

我正在尝试使用 C# 和 Linq to XML 读取 RSS 提要。提要以 utf-8 编码(请参阅http://pc03224.kr.hsnr.de/infosys/feed/),除了描述节点之外,它通常可以正常读取,因为它包含在 CDATA 部分中。

出于某种原因,在读出“描述”标签的内容后,我在调试器中看不到 CDATA 标签,但我想它一定在某个地方,因为只有在本节中,德语变音符号 (äöü) 和其他特殊字符不是正确显示。相反,它们保留在 utf-8 编码的字符串中,如ü.

我可以以某种方式正确读出它们,或者至少事后解码它们吗?

这是给我带来麻烦的 RSS 部分的示例:

<description><![CDATA[blabla bietet H&#246;rern meiner Vorlesungen &#8220;IAS&#8221;, &#8220;WEB&#8221; und &#8220;SWE&#8221; an, Lizenzen f&#252;r blabla [...]]]></description>

这是我读取并解析 RSS 提要数据的代码:

RssItems = (from xElem in xml.Descendants("channel").Descendants("item")
                            select new RssItem
                                       {
                                           Content =  xElem.Descendants("description").FirstOrDefault().Value,
                                           ...
                                       }).ToList();

提前致谢!

4

1 回答 1

2

您的代码按预期工作。CDATA 部分意味着不应解释内容,即"&#246;"不应将其视为 HTML 实体,而应仅视为字符序列。

联系 RSS 提要的作者并告诉他修复它,方法是删除 CDATA 标记以便解释实体,或者将预期的字符直接放入 HTML 文件中。

或者,查看HttpUtility.HtmlDecode以再次解码 CDATA 内容。

于 2009-11-12T22:07:43.730 回答