我正在尝试使用C#和Linq to XML读取RSS源 . feed以utf-8编码(参见http://pc03224.kr.hsnr.de/infosys/feed/)并且读取它通常可以正常工作,除了描述节点,因为它包含在CDATA部分中 .
出于某种原因,在读出"description"标签的内容后,我无法在调试器中看到CDATA标签,但我想它必定存在于某处,因为只有在本节中,德语Umlaute(äöü)和其他特殊字符才能正确显示 . 相反,它们保留在字符串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();
提前致谢!
1 回答
您的代码按预期工作 . CDATA部分意味着不应解释内容,即
"ö"
不应被视为HTML实体,而应视为一系列字符 .联系RSS提要的作者并告诉他修复它,方法是删除CDATA标签,以便解释实体,或者将目标字符直接放入HTML文件中 .
或者,查看HttpUtility.HtmlDecode以再次解码CDATA内容 .