You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XDocument读取带命名空间的RSS Feed元素返回null如何解决

问题修复方案

核心问题说明

你当前的命名空间拼接逻辑本身是正确的,content:encoded节点返回null主要是两个常见原因:

  • 部分item节点可能不存在content:encoded子节点,你直接调用.Value会触发空引用异常,被外层catch捕获后直接返回false,容易误认为是节点获取逻辑错误
  • 你当前的代码在处理完第一个RSS源后就直接在循环内return true,后续RSS源不会被处理,也会干扰问题排查

修复后的核心代码

首先修改节点取值逻辑,增加空值防护,避免空引用异常:

XNamespace nsSys = "http://purl.org/rss/1.0/modules/content/";
var entries = (from item in doc.Descendants("item")
              select new Movie_News
              {
                  // 增加空值判断,节点不存在时赋值为空字符串
                  Content = item.Element(nsSys + "encoded")?.Value ?? string.Empty,
                  Link = item.Element("link")?.Value ?? string.Empty,
                  PublishedDate = item.Element("pubDate")?.Value ?? string.Empty,
                  Title = item.Element("title")?.Value ?? string.Empty,
                  Description = item.Element("description")?.Value ?? string.Empty,
                  GroupName = "News",
                  FeedName = pair.Value
              });

其次将foreach循环内部的return true移到循环结束之后,避免只处理第一个RSS源就终止执行。

可选排查方案

如果修改后依然无法获取节点,可以先输出当前XML的所有命名空间,确认命名空间URI拼写完全匹配:

// 调试用,打印XML中声明的所有命名空间
var allNamespaces = doc.Root.DescendantsAndSelf()
    .SelectMany(x => x.Attributes())
    .Where(a => a.IsNamespaceDeclaration)
    .Distinct()
    .ToList();

内容的提问来源于stack exchange,提问作者Kevin Deery

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 01:36:05