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

ASP.NET WebForm读取RSS嵌套元素:仅获取<item>内数据及enclosure URL

解决ASP.NET WebForm读取RSS嵌套元素的问题

核心问题修正思路

问题出在未精准定位<item>节点范围,导致读取到全局的<title>,同时未正确提取<enclosure>的属性值。只需聚焦<item>节点内部的目标元素即可解决。

实现方案

方案一:使用XmlDocument(WebForm传统写法)

using System.Xml;

// 加载RSS源(可替换为文件路径或远程RSS地址)
XmlDocument rssDoc = new XmlDocument();
rssDoc.Load("你的RSS源地址");

// 精准获取所有<item>节点
XmlNodeList itemNodes = rssDoc.SelectNodes("//item");

foreach (XmlNode item in itemNodes)
{
    // 提取<item>内的title、description、pubDate
    string title = item.SelectSingleNode("title")?.InnerText ?? string.Empty;
    string description = item.SelectSingleNode("description")?.InnerText ?? string.Empty;
    string pubDate = item.SelectSingleNode("pubDate")?.InnerText ?? string.Empty;
    
    // 提取<enclosure>的url属性
    XmlNode enclosure = item.SelectSingleNode("enclosure");
    string enclosureUrl = enclosure?.Attributes["url"]?.Value ?? string.Empty;

    // 此处可添加数据处理逻辑(如存入实体、页面绑定等)
}

方案二:使用XDocument(LINQ to XML简洁写法)

using System.Xml.Linq;

// 加载RSS源
XDocument rssDoc = XDocument.Load("你的RSS源地址");

// 遍历<item>节点并提取目标数据
var rssItems = from item in rssDoc.Descendants("item")
               select new
               {
                   Title = item.Element("title")?.Value ?? string.Empty,
                   Description = item.Element("description")?.Value ?? string.Empty,
                   PubDate = item.Element("pubDate")?.Value ?? string.Empty,
                   EnclosureUrl = item.Element("enclosure")?.Attribute("url")?.Value ?? string.Empty
               };

foreach (var item in rssItems)
{
    // 处理提取到的数据
}

关键说明

  • 通过//item或Descendants("item")直接锁定所有<item>节点,避免读取到<item>外的无关元素。
  • 提取子元素时,始终从当前<item>节点内部查找,确保只获取嵌套在<item>内的目标内容。
  • 对<enclosure>的url属性,直接通过节点的Attributes/Attribute方法获取,同时添加null判断防止空引用异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 18:43:14