RSS已经非常流行了,几乎所有有点名气的和没名气的网站都有提供RSS服务。

本文详细教你什么是RSS,如是在.Net中使用RSS。

1.那么什么是RSS呢?

RSS是一种消息来源格式规范,用以发布经常更新资料的网站,例如博客、新闻的网摘。RSS文件,又称作摘要、网摘、更新、频道等,包含了全文或节选文字,再加上一定的属性数据。RSS让发布者自动发布信息,也使读者能够聚合和定期更新不同网站的网摘。RSS可以通过以网页或桌面为架构的软件来阅读,即RSS阅读器、新闻聚合器等,并进行定期更新检查、自动下载。详细介绍见RSS简介

2.RSS的格式是怎样的呢?

RSS目前主要有两种标准格式:RSS2.0 、Atom1.0

3.如何制作RSS,如何解析RSS呢?

在.NET4/3.5下,MS集成了RSS对象。让RSS的解析和创建变得如此简单。

先引用System.ServiceModel

代码里面:

using System.ServiceModel.Syndication;

解析RSS和Atom的方法如下:

//通用解析RSS方法
protected void ShowRSS(string rssURI)
{
SyndicationFeed sf = SyndicationFeed.Load(XmlReader.Create(rssURI)); textBox1.Text += "title:" + sf.Title.Text + "\r\n";
if (sf.Links.Count > 0)
textBox1.Text += "Link:" + sf.Links[0].Uri.ToString() + "\r\n";
if (sf.Authors.Count > 0 && !string.IsNullOrEmpty(sf.Authors[0].Uri))
textBox1.Text += "Link:" + sf.Authors[0].Uri.ToString() + "\r\n";
textBox1.Text += "pubDate:" + sf.LastUpdatedTime.ToString("yyyy-MM-dd HH:mm:ss") + "\r\n"; foreach (SyndicationItem it in sf.Items)
{
textBox1.Text += "\r\n-----------------------------------------------------\r\n";
textBox1.Text += "title:" + it.Title.Text + "\r\n";
if (it.Links.Count > 0)
textBox1.Text += "Link:" + it.Links[0].Uri.ToString() + "\r\n";
textBox1.Text += "PubDate:" + it.PublishDate.ToString("yyyy-MM-dd HH:mm:ss") + "\r\n";
if(it.Summary!=null)
textBox1.Text += "Summary:" + it.Summary.Text + "\r\n";
if(it.Content!=null)
textBox1.Text += "Content:" + ((TextSyndicationContent)it.Content).Text + "\r\n";
Application.DoEvents();
} }

  

解释:此方法可解析RSS2.0和Atom格式。传入参数是一个rss的xml文件路径或者网址。

调用ShowRSS方法示例1(解析Atom):

           //解析博客园的RSS,该RSS版本为Atom,从http://feed.cnblogs.com/blog/u/18638/rss下载所得。
ShowRSS(Application.StartupPath + "\\cnblogs.xml"); //修改成博客园RSS地址进行测试
//ShowRSS("http://feed.cnblogs.com/blog/u/18638/rss");

  

调用ShowRSS方法示例2(解析RSS2.0):

            //解析创业邦的RSS,该RSS版本为RSS2.0
ShowRSS(Application.StartupPath + "\\cyb.xml"); //修改成创业邦RSS地址进行测试
//ShowRSS("http://www.cyzone.cn/rss/");

  

解释:可以拿真实网址测试,上面两个网址分别是RSS2.0格式和Atom格式。

生成RSS2.0的方法:

//生成RSS2.0
SyndicationFeed feed = new SyndicationFeed("博客园_DotNet笔记",
"兴趣是最好的老师。",
new Uri("http://cnblogs.com/tuyile006"),
"FeedID,如:uuid:0913a2a5-6900-42a0-a3ab-2ba6a1706b03;id=10373",
DateTime.Now); List<SyndicationItem> items = new List<SyndicationItem>(); SyndicationItem item1 = new SyndicationItem();
item1.Title = new TextSyndicationContent("博客标题,如:解析和生成RSS或Atom");
item1.Content = SyndicationContent.CreatePlaintextContent("正文:本文讲述如何在.Net中实现Rss和Atom的生成和解析……");
item1.Summary = SyndicationContent.CreatePlaintextContent("摘要:本文讲述如何在.Net中实现Rss和Atom的生成和解析");
item1.PublishDate = DateTime.Now;
items.Add(item1); SyndicationItem item2 = new SyndicationItem();
item2.Title = new TextSyndicationContent("博客标题2,如:.Net笔记介绍");
item2.Content = SyndicationContent.CreatePlaintextContent("正文:兴趣是最好的老师……");
item2.Summary = SyndicationContent.CreatePlaintextContent("摘要:小y的博客.Net笔记介绍");
item2.PublishDate = DateTime.Now;
items.Add(item2);
//循环添加…… feed.Items = items; XmlWriter xmlWriter = XmlWriter.Create("YourRSSFile.xml");
feed.SaveAsRss20(xmlWriter);
xmlWriter.Close();

  

解释:生成RSS2.0和Atom格式的xml只是最后的保存方法不同,一个是SaveAsRss20,一个是SaveAsAtom10,前面创建SyndicationFeed的过程是一样的。

程序界面如下:

程序下载: Demo  Code

用C#实现RSS的生成和解析,支持RSS2.0和Atom格式的更多相关文章

  1. ini格式数据生成与解析具体解释

    ini格式数据生成与解析具体解释 1.ini格式数据长啥样? watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/ ...

  2. [转]java二维码生成与解析代码实现

    转载地址:点击打开链接 二维码,是一种采用黑白相间的平面几何图形通过相应的编码算法来记录文字.图片.网址等信息的条码图片.如下图 二维码的特点: 1.  高密度编码,信息容量大 可容纳多达1850个大 ...

  3. iOS开发之JSON格式数据的生成与解析

    本文将从四个方面对IOS开发中JSON格式数据的生成与解析进行讲解: 一.JSON是什么? 二.我们为什么要用JSON格式的数据? 三.如何生成JSON格式的数据? 四.如何解析JSON格式的数据? ...

  4. 在Salesforce中处理Xml的生成与解析

    在Salesforce中处理Xml的生成与解析 1): Generate Xml private String ConvertAccountToXmlInfo(Account acc){ Dom.Do ...

  5. Android zxing实现二维码生成和解析

    二维码的生成与解析.有多种途径.我选择用大品牌,google老大的zxing. gitHub链接是(我用的3.0.0,已经是nio了) https://github.com/zxing/zxing/t ...

  6. fastjson生成和解析json数据,序列化和反序列化数据

    本文讲解2点: 1. fastjson生成和解析json数据 (举例:4种常用类型:JavaBean,List<JavaBean>,List<String>,List<M ...

  7. zxing实现二维码生成和解析

    转自:http://kesun-shy.iteye.com/blog/2154169 二维码的生成与解析.有多种途径.我选择用大品牌,google老大的zxing. gitHub链接是(我用的3.0. ...

  8. ZXing二维码的生成和解析

    Zxing是Google提供的关于条码(一维码.二维码)的解析工具,提供了二维码的生成与解析的方法, 现在我简单介绍一下使用Java利用Zxing生成与解析二维码 注意: 二维码的生成需要借助辅助类( ...

  9. Qt之JSON生成与解析

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.它基于JavaScript(Standard ECMA-262 3rd Edition - December ...

随机推荐

  1. 在VS中使用TinyFox调试OWIN应用(转)

    在很早一段时间之前,我曾经写过一篇关于Katana的使用方法的文章<如何安装并简单的使用OwinHost——Katana>,上面就有介绍如何在VS中调试使用Katana作为Host的App ...

  2. C#函数式程序设计之局部套用与部分应用

    函数式设计的核心与函数的应用以及函数如何作为算法的基本模块有关.利用局部套用技术可以把所有函数看成是函数类的成员,这些函数只有一个形参,有了局部套用,才有部分应用.部分应用是使函数模块化成为可能的两个 ...

  3. [Bootstrap]7天深入Bootstrap(4)CSS组件

    Bootstrap框架的三大核心之二:组件. 组件也是最核心的地方,因为绝大部分的网页都必须利用组件才能构建出绚丽的页面. 组件包括:Icon图标(Glyphicon). 下拉菜单(Dropdown) ...

  4. RequireJS 模块化加载框架使用

    RequireJS 是一个遵循 AMD 规范的模块化加载框架 与上文seajs一样,这里简单介绍其相关用法 同样的,首先是下载好 require.js --> http://requirejs. ...

  5. ok6410 android driver(4)

    Install busybox for goldfish/phone 1. Download busybox source code http://www.busybox.net/ 2. Decomp ...

  6. JS Date.Format

    // 对Date的扩展,将 Date 转化为指定格式的String // 月(M).日(d).小时(h).分(m).秒(s).季度(q) 可以用 1-2 个占位符, // 年(y)可以用 1-4 个占 ...

  7. [CLR via C#]9. 参数

    一.可选参数和命名参数 在设计一个方法的参数时,可为部分或全部参数分配默认值.然后,调用这些方法的代码时可以选择不指定部分实参,接受默认值.此外,调用方法时,还可以通过指定参数名称的方式为其传递实参. ...

  8. 【JS复习笔记】03 继承

    关于继承 好吧,说到底JS还是原型继承的,而不是类继承.所以在这个上面要经常用到prototype去继承另一个对象. 所有的构造器函数都约定命名为首字母大写的形式,并且不以首字母大写的形式拼写任何其它 ...

  9. POJ 1681---Painter's Problem(高斯消元)

    POJ   1681---Painter's Problem(高斯消元) Description There is a square wall which is made of n*n small s ...

  10. 泛函编程(17)-泛函状态-State In Action

    对OOP编程人员来说,泛函状态State是一种全新的数据类型.我们在上节做了些介绍,在这节我们讨论一下State类型的应用:用一个具体的例子来示范如何使用State类型.以下是这个例子的具体描述: 模 ...