使用C#读取WordPress RSS Feed时,如何提取content:encoded内容?
解决WordPress RSS Feed中content:encoded内容提取问题
你当前用ReadElementExtensions<string>获取不到content:encoded内容,是因为SyndicationFeed对自定义命名空间元素的处理存在局限。可以通过直接将SyndicationItem转换为XElement的方式,精准定位到目标元素:
修改后的代码示例:
var reader = XmlReader.Create(blogSettings.RssFeedUrl); var feed = SyndicationFeed.Load(reader); var contentNs = XNamespace.Get("http://purl.org/rss/1.0/modules/content/"); var items = feed.Items.Select(i => { // 将SyndicationItem的扩展元素加载为XElement var itemXElement = XElement.Load(i.GetReaderAtElementExtensions()); // 获取content:encoded元素的内容 var contentEncoded = itemXElement.Element(contentNs + "encoded")?.Value; return new BlogPost { // 赋值到对应的属性,比如: // FullContent = contentEncoded }; }); return items;
关键说明
- 先通过
XNamespace指定content模块的命名空间,确保能准确匹配content:encoded元素 - 使用
i.GetReaderAtElementExtensions()获取扩展元素的阅读器,再加载为XElement,完整保留元素原始结构 - 用
?.Value处理元素不存在的情况,避免空引用异常
内容的提问来源于stack exchange,提问作者muttley91
相关产品推荐
相关产品推荐

