讲师中心 微信公众号
AI工具推荐 视频效率加速

C#中解析RSS或Atom Feed XML 常见结构与解析要点

小墨姑娘_4567

小墨姑娘_4567

发布时间:2025-11-30 15:58:53

|

635人浏览过

|

来源于php中文网

原创

使用SyndicationFeed可统一解析RSS和Atom Feed,自动处理XML结构、命名空间与日期格式;RSS以和组织数据,Atom则用和,字段如、、发布时间等略有差异;推荐通过XmlReader加载流并利用SyndicationFeed.Load解析,避免手动处理细节,同时注意网络请求超时控制、空值检查及HTML内容清理。

c#中解析rss或atom feed xml 常见结构与解析要点

在C#中解析RSS或Atom Feed时,了解其常见XML结构和解析方式是关键。这两种格式都基于XML,用于发布网站更新、新闻等内容,但结构略有不同。使用.NET内置的System.Xml或SyndicationFeed类可以高效处理这些数据。

RSS Feed 常见结构与字段

RSS(Really Simple Syndication)通常以<rss></rss>为根节点,版本多为2.0。主要结构如下:

  • <channel></channel>:包含频道信息,如标题、描述、链接等
  • <title></title>:频道或条目标题
  • <link>:频道或文章的URL
  • <description></description>:频道或条目的摘要
  • <item></item>:每个文章条目,可有多个
  • <pubdate></pubdate>:发布时间,格式通常为RFC 822
  • <guid></guid>:唯一标识符,用于去重

示例片段:


  
    Example Blog
    https://example.com
    
      First Post
      https://example.com/post1
      This is the first article.
      Mon, 01 Jan 2024 12:00:00 GMT
      https://example.com/post1
    

  

Atom Feed 常见结构与字段

Atom 使用<feed></feed>作为根元素,遵循RFC 4287标准,结构更规范:

  • <title></title>:Feed或条目标题
  • <link href="...">:使用属性表示URL,可能有多个(如self、alternate)
  • <id></id>:Feed或条目的唯一ID,常为URI
  • <updated></updated>:最后更新时间,ISO 8601格式
  • <entry></entry>:每篇文章条目
  • <published></published>:发布日期(可选)
  • <summary></summary> 或 <content></content>:内容摘要或完整内容

示例片段:


  Example Atom Feed
  
  2024-01-01T12:00:00Z
  
    First Entry
    
    urn:uuid:12345678-1234-4123-8234-123456789abc
    2024-01-01T12:00:00Z
    This is an entry.
  

使用 SyndicationFeed 解析(推荐方式)

.NET 提供了 SyndicationFeed 类(位于 System.ServiceModel.Syndication),可自动处理RSS和Atom,无需手动解析XML。

HTML Text Extract
HTML Text Extract

从HTML页面(URL、文件或标准输入)中提取主体内容文本,去除导航、页脚、广告和模板文本。可直接传递给readability_check或其他文本工具。

下载

步骤如下:

  • 添加引用:using System.ServiceModel.Syndication;
  • 使用 XmlReader 读取Feed流
  • 通过 SyndicationFeed.Load(reader) 加载并解析

代码示例:

using var xmlReader = XmlReader.Create("https://example.com/feed.xml");
if (SyndicationFeed.Load(xmlReader) is SyndicationFeed feed)
{
  Console.WriteLine($"Feed Title: {feed.Title.Text}");
  foreach (var item in feed.Items)
  {
    Console.WriteLine($"- {item.Title.Text} ({item.PublishDate})");
  }
}

该方法优点:自动识别RSS/Atom、统一API、处理命名空间、日期转换等细节。

解析要点与注意事项

实际开发中需注意以下几点:

  • 网络请求应使用 HttpClient 获取Feed内容,避免直接传URL给XmlReader(不利于控制超时)
  • 某些Feed可能包含HTML内容,提取Summary或Description时注意清理或转义
  • 日期字段格式不一,SyndicationFeed会自动转为DateTimeOffset,建议统一处理
  • Atom使用默认命名空间,手动解析时必须正确处理命名空间前缀
  • GUID或ID可能不是URL,判断重复项时需结合源标识
  • 部分Feed条目缺失字段(如无发布时间),需做空值检查

若需更高灵活性(如定制解析逻辑),也可用XDocument配合命名空间进行LINQ to XML解析,但维护成本较高。

基本上就这些。使用SyndicationFeed能覆盖大多数场景,简化开发并提高兼容性。

热门AI工具

更多
立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

小橡皮AI

一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

相关专题

更多
php中foreach用法
php中foreach用法

本专题整合了php中foreach用法的相关介绍,阅读专题下面的文章了解更多详细教程。

798

2025.12.04

pdf怎么转换成xml格式
pdf怎么转换成xml格式

将 pdf 转换为 xml 的方法:1. 使用在线转换器;2. 使用桌面软件(如 adobe acrobat、itext);3. 使用命令行工具(如 pdftoxml)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

4744

2024.04.01

xml怎么变成word
xml怎么变成word

步骤:1. 导入 xml 文件;2. 选择 xml 结构;3. 映射 xml 元素到 word 元素;4. 生成 word 文档。提示:确保 xml 文件结构良好,并预览 word 文档以验证转换是否成功。想了解更多xml的相关内容,可以阅读本专题下面的文章。

6157

2024.08.01

xml是什么格式的文件
xml是什么格式的文件

xml是一种纯文本格式的文件。xml指的是可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。想了解更多相关的内容,可阅读本专题下面的相关文章。

2522

2024.11.28

mysql标识符无效错误怎么解决
mysql标识符无效错误怎么解决

mysql标识符无效错误的解决办法:1、检查标识符是否被其他表或数据库使用;2、检查标识符是否包含特殊字符;3、使用引号包裹标识符;4、使用反引号包裹标识符;5、检查MySQL的配置文件等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

15740

2023.12.04

Python标识符有哪些
Python标识符有哪些

Python标识符有变量标识符、函数标识符、类标识符、模块标识符、下划线开头的标识符、双下划线开头、双下划线结尾的标识符、整型标识符、浮点型标识符等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1163

2024.02.23

java标识符合集
java标识符合集

本专题整合了java标识符相关内容,想了解更多详细内容,请阅读下面的文章。

8690

2025.06.11

c++标识符介绍
c++标识符介绍

本专题整合了c++标识符相关内容,阅读专题下面的文章了解更多详细内容。

3442

2025.08.07

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

20

2026.10.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
GDB 17.2 官方文档集合
GDB 17.2 官方文档集合

共0课时 | 0人学习

Bootstrap 入门安装配置
Bootstrap 入门安装配置

共0课时 | 0人学习

38+ PhpStorm 提示和技巧
38+ PhpStorm 提示和技巧

共1课时 | 228人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn