我正在尝试使用C#和Linq to XML读取RSS源。 feed以utf-8编码(参见http://pc03224.kr.hsnr.de/infosys/feed/)并且读取它通常可以正常工作,除了描述节点,因为它包含在CDATA部分中。
出于某种原因,在读完“description”标签的内容之后,我无法在调试器中看到CDATA标签,但我想它必须在某处,因为只有在本节中才有德国元音(äöü)和其他特殊内容字符未正确显示。相反,它们保留在字符串utf-8编码中,如ü
。
我可以以某种方式正确地读出它们,或者至少在之后解码它们吗?
这是RSS部分的示例,给我带来麻烦:
<description><![CDATA[blabla bietet Hörern meiner Vorlesungen “IAS”, “WEB” und “SWE” an, Lizenzen für blabla [...]]]></description>
这是我的代码,它读取并解析RSS提要数据:
RssItems = (from xElem in xml.Descendants("channel").Descendants("item")
select new RssItem
{
Content = xElem.Descendants("description").FirstOrDefault().Value,
...
}).ToList();
提前致谢!
答案 0 :(得分:2)
您的代码按预期工作。 CDATA部分意味着不应解释内容,即"ö"
不应被视为HTML实体,而应视为一系列字符。
联系RSS提要的作者并告诉他修复它,方法是删除CDATA标签,以便解释实体,或者将目标字符直接放入HTML文件中。
或者,请查看HttpUtility.HtmlDecode以再次解码CDATA内容。