用C#实现RSS的生成和解析,支持RSS2.0和Atom格式

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

时间: 2024-10-22 12:33:46

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

ini格式数据生成与解析详解

ini格式数据生成与解析详解 1.ini格式数据长啥样? 2.ini格式数据简介 INI文件的命名来源,是取自英文"初始(Initial)"的首字缩写,正与它的用途--初始化程序相应. 有时候,INI文件也会以不同的扩展名,如".cfg".".conf"(在Linux系统中也常用到).或是".txt"代替(从辨识度的角度,不建议使用). 3.ini格式数据适用场景 INI文件是一个无固定标准格式的配置文件.它以简单的文字与简单

Qt之JSON生成与解析

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C.C++.C#.Java.JavaScript.Perl.Python等).这些特性使JSON成为理想的数据交换语言.易于人阅读和编写,同时也易于机器解析和生成. 常用的Json库 JsonCp

java二维码生成与解析代码实现

二维码,是一种采用黑白相间的平面几何图形通过相应的编码算法来记录文字.图片.网址等信息的条码图片.如下图 二维码的特点: 1.  高密度编码,信息容量大 可容纳多达1850个大写字母或2710个数字或1108个字节,或500多个汉字,比普通条码信息容量约高几十倍. 2.  编码范围广 该条码可以把图片.声音.文字.签字.指纹等可以数字化的信息进行编码,用条码表示出来:可以表示多种语言文字:可表示图像数据. 3.  容错能力强,具有纠错功能 这使得二维条码因穿孔.污损等引起局部损坏时,照样可以正确

二维码(QR Code)生成与解析

二维码(QR Code)生成与解析 写在前面 经常在大街上听到扫码送什么什么,如果真闲着没事,从头扫到位,估计书包都装满了各种东西.各种扫各种送,太泛滥了.项目中从没接触过二维码的东东,最近要使用,就扒了扒网络,发现关于解析二维码的类库还是非常多的,这里就选择一个做一个demo,玩玩. 一个例子 关于二维码的组件还是非常多的,你可以使用nuget选择一款使用就可以了. 生成二维码 // GET: Home public ActionResult Index() { QRCodeEncoder e

JSON数据的生成与解析

JSON数据的生成与解析,首先先到网上下载一个json jar包,我用的是org.json 示例代码: package json; import org.json.JSONArray; import org.json.JSONObject; public class Main { /** * 生成Json数据 */ public static String createJson(){ JSONObject json = new JSONObject(); json.put("classId&qu

dom4j xml的生成与解析

这两天在一直写数据接口,涉及到数据xml文件的生成与解析,在此,简单地记录和总结一下. 其实,生成与解析xml文件主要还是运用java中的I/O文件的知识点. 现在大多数的人写xml文件的生成和解析都使用dom4j,它确实比传统的w3c的写法要简单方便的多.就像jQuery相比于js的优点显而易见一般. dom4j 简介: dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个非常优秀的Java XML API,同时它也是一个开放源代码的软件,可以在So

android下基本json串的生成与解析

以前就用过json串,不过是在java环境下面,如今转移到android环境下,java里面生成解析json串的jar包与android中自带的冲突,所以也只能用安卓自带的. 先前查网上的资料,感觉很多都说的很乱,直接给出了例子,也不解释一下就算完成,他们自己肯定是明白的,但是让读者理解起来肯定有点难度.而且解析的方法很多,而这里,我就介绍一种最原始最简单的吧.希望我拙劣的表达能力不会影响到你们的理解. 首先我们先讲一下json串格式 比如对象pet(宠物) class pet{ int pet

java二维码的生成与解析代码

二维码,是一种采用黑白相间的平面几何图形通过相应的编码算法来记录文字.图片.网址等信息的条码图片.如下图 二维码的特点: 1.  高密度编码,信息容量大 可容纳多达1850个大写字母或2710个数字或1108个字节,或500多个汉字,比普通条码信息容量约高几十倍. 2.  编码范围广 该条码可以把图片.声音.文字.签字.指纹等可以数字化的信息进行编码,用条码表示出来:可以表示多种语言文字:可表示图像数据. 3.  容错能力强,具有纠错功能 这使得二维条码因穿孔.污损等引起局部损坏时,照样可以正确

Java使用QRCode.jar生成与解析二维码

正题:Java使用QRCode.jar生成与解析二维码demo 欢迎新手共勉,大神监督指正 # 不知道QRCode的请移步wiki,自行了解,这里不多做解释 *******创建二维码之前的工作******** 去下面给出的地址下载QRCode.jar包,此jar包已经包括 生成与解析 . 官网下载到的jar包是没有解析的 https://files.cnblogs.com/files/bigroc/QRCode.zip ***创建好你的测试类导好jar包开始吧*** 第一部分:生成二维码 pac