C#实现RSS订阅

今天朋友问我怎么操作RSS,说实话以前还真没弄过,甚至就不知道什么是RSS。谷哥了一下才发现原来RSS就是一个XML文档啊

 

首先介绍下什么是RSS,来自百度百科:

 

RSS(简易信息聚合,也叫聚合内容)是一种描述和同步网站内容的格式。RSS可以是以下三个解释的其中一个: Really Simple Syndication;RDF (Resource Description Framework) Site Summary; Rich Site Summary。但其实这三个解释都是指同一种Syndication的技术。RSS目前广泛用于网上新闻频道,blog和wiki,主要的版本有0.91, 1.0, 2.0。使用RSS订阅能更快地获取信息,网站提供RSS输出,有利于让用户获取网站内容的最新更新。网络用户可以在客户端借助于支持RSS的聚合工具软件,在不打开网站内容页面的情况下阅读支持RSS输出的网站内容。

 

下面就通过这个规范来对RSS进行解析提取数据:

string rsspath = "https://dabao.me/rss.php";//RSS地址

        XmlDocument doc = new XmlDocument();//创建文档对象
        try
        {
            doc.Load(rsspath);//加载XML 包括HTTP:// 和本地
        }
        catch (Exception ex)
        {
            //异常处理
        }
        XmlNodeList list = doc.GetElementsByTagName("item"); //获得项           

        foreach (XmlNode node in list) //循环每一项
        {
            XmlElement ele = (XmlElement)node;
            string title = ele.GetElementsByTagName("title")[0].InnerText;//获得标题
            string link = ele.GetElementsByTagName("link")[0].InnerText;//获得联接
            string description = ele.GetElementsByTagName("description")[0].InnerText;//获得简介

            //添加绑定操作
        }

 

 

【转】RSS规范

RSS是 Really Simple Syndication的缩写(对rss2.0而言,是这三个词的缩写,对rss1.0而言则是RDF Site Summary的缩写,1.0与2.0走的是两个体系)
   RSS 基于XML,所有的 RSS 必须遵循w3c网站上公布的XML 1.0 规范。
  在一个RSS文档中,根元素是 <rss>,带有一个必备属性version,用以指明该文档遵循的rss规范,如果rss文档遵循本规范,则version值必须是2.0。
   <rss>元素只有一个子元素,包含关于频道的一些信息。频道(channel)是整个blog,项(item)指一篇文章或日志(也有称这为post)。

RSS2.0元素channel的子元素列表


元素 描述 值域 重要性 举例
title 频道名称 必备 GoUpstate.com News Headlines
link 频道的URL 必备 http://www.goupstate.com/
Description 频道的描述 必备 The latest news from GoUpstate.com, a Spartanburg Herald-Journal Web site.
language 频道文章所用语言, 可用netscape或w3c推荐的列表 可选 en-us
copyright 频道内容的版权说明 可选 Copyright 2002, Spartanburg Herald-Journal
managingEditor 责任编辑的email 可选 geo@herald.com (George Matesky)
webMaster 负责频道技术事务的网站管理员email 可选 betty@herald.com (Betty Guernsey)
pubDate 频道内容发布日期,格式遵循RFC822格式(年份可为2们或4位) 可选 Sat, 07 Sep 2002 00:00:01 GMT
lastBuildDate 频道内容最后的修改日期 可选 Sat, 07 Sep 2002 09:42:31 GMT
category 指定频道所属的一个或几个类别 可选 <category>Newspapers</category>
generator 生成该频道的程序名 可选 MightyInHouse Content System v2.3
docs 指向该RSS文件所用格式说明的URL 可选 http://blogs.law.harvard.edu/tech/rss
cloud Allows processes to register with a cloud to be notified of updates to the channel, implementing a lightweight publish-subscribe protocol for RSS feeds. More info h 可选 <cloud domain="rpc.sys.com" port="80" path="/RPC2" registerProcedure="pingMe" protocol="soap"/>
ttl 有效期,用以指明该频道可被缓存的最长时间 分钟为单位 可选 <ttl>60</ttl>
image 指定一个 GIF或JPEG或PNG图片,用以与频道一起显示 可选
rating 这个频道的分级(主要指成人、限制、儿童等) 可选
textInput 指定一个text输入框供用户输入,具体信息及功能未定。 可选
skipHours 提示新闻聚合器,那些小时时段它可以跳过。 可选
skipDays 提示新闻聚合器,那些天它可以跳过。 可选

RSS2.0元素channel的子元素image的子元素列表


元素(Element) 描述 值域 重要性 举例(Example)
url 图片的url 必备
title 图片的标题,用于http的alt属性 必备
link 网站的url(实际中常以频道的url代替) 必备
width 图片的宽度(象素为单位) 最大144,默认88 可选
height 图片的高度(象素为单位) 最大400,默认31 可选
description 用于link的title属性 可选

RSS2.0元素channel的子元素cloud的子元素列表


元素(Element) 描述 值域 重要性 举例(Example)
domain Cloud程序所在机器的域名或IP地址 radio.xmlstoragesystem.com
port 访问clound程序所通过的端口 80
path 程序所在路径(不一定是真实路径) /RPC2
registerProcedure 注册的可提供的服务或过程 xmlStorageSystem.rssPleaseNotify
protocol 协议 xml-rpc, soap , http-post 之一 xml-rpc

RSS2.0元素channel的子元素textInput的子元素列表


元素(Element) 描述 值域 重要性 举例(Example)
title Submit按钮的标签 必备
description 解释text输入区 必备
name Text area对象的名字 必备
link 处理提交的请求的cgi程序 必备

上一篇‡: 分享几个比较不错的国外的设计网站

下一篇‡: Windows 7安装MSMQ失败,出现错误,并非所有功能被成功更改 解决办法

最近回复