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


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


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


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

stringrsspath="http://dabao.im/rss.php";//RSS地址

XmlDocumentdoc=newXmlDocument();//创建文档对象

try

{

doc.Load(rsspath);//加载XML包括HTTP://和本地

}

catch(Exceptionex)

{

//异常处理

}

XmlNodeListlist=doc.GetElementsByTagName("item");//获得项

foreach(XmlNodenodeinlist)//循环每一项

{

XmlElementele=(XmlElement)node;

stringtitle=ele.GetElementsByTagName("title")[0].InnerText;//获得标题

stringlink=ele.GetElementsByTagName("link")[0].InnerText;//获得联接

stringdescription=ele.GetElementsByTagName("description")[0].InnerText;//获得简介

//添加绑定操作

}


知识扩展

【转】RSS规范RSS是ReallySimpleSyndication的缩写(对rss2.0而言,是这三个词的缩写,对rss1.0而言则是RDFSiteSummary的缩写,1.0与2.0走的是两个体系)
RSS基于XML,所有的RSS必须遵循w3c网站上公布的XML1.0规范。
在一个RSS文档中,根元素是<rss>,带有一个必备属性version,用以指明该文档遵循的rss规范,如果rss文档遵循本规范,则version值必须是2.0。
<rss>元素只有一个子元素,包含关于频道的一些信息。频道(channel)是整个blog,项(item)指一篇文章或日志(也有称这为post)。
RSS2.0元素channel的子元素列表
元素描述值域重要性举例title频道名称​必备GoUpstate.comNewsHeadlineslink频道的URL​必备http://www.goupstate.com/Description频道的描述​必备ThelatestnewsfromGoUpstate.com,aSpartanburgHerald-JournalWebsite.language频道文章所用语言,可用netscape或w3c推荐的列表可选en-uscopyright频道内容的版权说明​可选Copyright2002,SpartanburgHerald-JournalmanagingEditor责任编辑的email​可选geo@herald.com(GeorgeMatesky)webMaster负责频道技术事务的网站管理员email​可选betty@herald.com(BettyGuernsey)pubDate频道内容发布日期,格式遵循RFC822格式(年份可为2们或4位)​可选Sat,07Sep200200:00:01GMTlastBuildDate频道内容最后的修改日期​可选Sat,07Sep200209:42:31GMTcategory指定频道所属的一个或几个类别​可选<category>Newspapers</category>generator生成该频道的程序名​可选MightyInHouseContentSystemv2.3docs指向该RSS文件所用格式说明的URL​可选http://blogs.law.harvard.edu/tech/rsscloudAllowsprocessestoregisterwithacloudtobenotifiedofupdatestothechannel,implementingalightweightpublish-subscribeprotocolforRSSfeeds.Moreinfoh​可选<clouddomain="rpc.sys.com"port="80"path="/RPC2"registerProcedure="pingMe"protocol="soap"/>ttl有效期,用以指明该频道可被缓存的最长时间分钟为单位可选<ttl>60</ttl>p_w_picpath指定一个GIF或JPEG或PNG图片,用以与频道一起显示​可选​rating这个频道的分级(主要指成人、限制、儿童等)​可选​textInput指定一个text输入框供用户输入,具体信息及功能未定。​可选​skipHours提示新闻聚合器,那些小时时段它可以跳过。​可选​skipDays提示新闻聚合器,那些天它可以跳过。​可选​RSS2.0元素channel的子元素p_w_picpath的子元素列表
元素(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)domainCloud程序所在机器的域名或IP地址​​radio.xmlstoragesystem.comport访问clound程序所通过的端口​​80path程序所在路径(不一定是真实路径)​​/RPC2registerProcedure注册的可提供的服务或过程​​xmlStorageSystem.rssPleaseNotifyprotocol协议xml-rpc,soap,http-post之一​xml-rpc
RSS2.0元素channel的子元素textInput的子元素列表
元素(Element)描述值域重要性举例(Example)titleSubmit按钮的标签​必备​description解释text输入区​必备​nameTextarea对象的名字​必备​link处理提交的请求的cgi程序​必备​