.NET 3.5 : 读写RSS或者ATOM

在.NET 3.5中提供了一套全新的接口来实现对RSS和ATOM这两种数据文件的读写。非常方便。下面演示一下

1. 首先要添加一个引用System.ServiceModel.Web

using System.ServiceModel.Syndication;
using System.Xml;

2. 读取RSS的代码

/// <summary>
/// 从一个远程站点读取RSS
/// </summary>
///
<param name="sender"></param>
/// <param
name="e"></param>
private void btLoad_Click(object sender, EventArgs
e)
{
    SyndicationFeed feed =
SyndicationFeed.Load(XmlReader.Create(feedaddress.Text));
   
var items = from item in
feed.Items
               
where
item.Title.Text.Contains("VSTS")
               
orderby item.PublishDate
descending
               
select new { Id = item.Id, Title = item.Title.Text };

dgvResult.DataSource = items.ToArray();
}

效果如下

3. 写入RSS的代码如下

/// <summary>
/// 构造一个RSS
/// </summary>
/// <param
name="sender"></param>
/// <param
name="e"></param>
private void btCreate_Click(object sender,
EventArgs e)
{
    SyndicationFeed feed = new
SyndicationFeed(
       
"我的博客", 
       
"陈希章的博客", 
        new Uri("http://www.xizhang.com/"),
       
new[]{
            new
SyndicationItem("测试博客标题", "博客内容", new Uri("http://www.xizhang.com/test.aspx")),
           
new SyndicationItem("测试博客标题", "博客内容", new Uri("http://www.xizhang.com/test.aspx")),
           
new SyndicationItem("测试博客标题", "博客内容", new Uri("http://www.xizhang.com/test.aspx"))
       
}
        );

XmlWriter xw =
XmlWriter.Create("rss.xml");
   
feed.SaveAsRss20(xw);
    xw.Close();
}

效果如下

4. 结合ashx实现网站的RSS整合

using System;
using System.Web;
using System.Web.Services;
using
System.ServiceModel.Syndication;
using System.Xml;

namespace WebApplication1
{
    ///
<summary>
    /// $codebehindclassname$
的摘要说明
    /// </summary>
   
[WebService(Namespace = "http://tempuri.org/")]
   
[WebServiceBinding(ConformsTo =
WsiProfiles.BasicProfile1_1)]
    public class RSS :
IHttpHandler
    {

public void
ProcessRequest(HttpContext
context)
       
{
           
SyndicationFeed feed = new
SyndicationFeed(
               
"我的博客",
               
"陈希章的博客",
               
new Uri("http://www.xizhang.com/"),
               
new[]{
                   
new SyndicationItem("测试博客标题", "博客内容", new Uri("http://www.xizhang.com/test.aspx")),
                   
new SyndicationItem("测试博客标题", "博客内容", new Uri("http://www.xizhang.com/test.aspx")),
                   
new SyndicationItem("测试博客标题", "博客内容", new Uri("http://www.xizhang.com/test.aspx"))
               
}
               
);

XmlWriter
xw =
XmlWriter.Create(context.Response.OutputStream);
           
feed.SaveAsRss20(xw);
           
xw.Close();
           
context.Response.End();
        }

public bool
IsReusable
       
{
           
get
           
{
               
return
false;
           
}
        }
   
}
}

在客户端读取的效果如下

5. 结合数据库的案例

using System;
using System.Web;
using System.Web.Services;
using
System.ServiceModel.Syndication;
using System.Xml;
using
System.Data;
using System.Linq;

namespace WebApplication1
{
    ///
<summary>
    /// $codebehindclassname$
的摘要说明
    /// </summary>
   
[WebService(Namespace = "http://tempuri.org/")]
   
[WebServiceBinding(ConformsTo =
WsiProfiles.BasicProfile1_1)]
    public class RSS :
IHttpHandler
    {

public void
ProcessRequest(HttpContext
context)
        {

DataTable
tb = new
DataTable();
           
tb.Columns.AddRange(
               
new[]{
                   
new
DataColumn("Title"),
                   
new
DataColumn("Contents"),
                   
new
DataColumn("Link")
               
});
           
//这里可以假设读取一些数据过来

var items
= from DataRow row in
tb.Rows
                       
select new SyndicationItem(row.Field<string>(0),
row.Field<string>(1), new Uri(row.Field<string>(2)));

SyndicationFeed feed = new
SyndicationFeed(
               
"我的博客",
               
"陈希章的博客",
               
new Uri("http://www.xizhang.com/"),
               
items.ToArray()
               
);

XmlWriter
xw =
XmlWriter.Create(context.Response.OutputStream);
           
feed.SaveAsRss20(xw);
           
xw.Close();
           
context.Response.End();
        }

public bool
IsReusable
       
{
           
get
           
{
               
return
false;
           
}
        }
   
}
}

原文地址:http://www.cnblogs.com/chenxizhang/archive/2009/07/16/1525000.html

.NET 3.5 : 读写RSS或者ATOM,布布扣,bubuko.com

时间: 2024-10-25 23:25:55

.NET 3.5 : 读写RSS或者ATOM的相关文章

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

RSS已经非常流行了,几乎所有有点名气的和没名气的网站都有提供RSS服务. 本文详细教你什么是RSS,如是在.Net中使用RSS. 1.那么什么是RSS呢? RSS是一种消息来源格式规范,用以发布经常更新资料的网站,例如博客.新闻的网摘.RSS文件,又称作摘要.网摘.更新.频道等,包含了全文或节选文字,再加上一定的属性数据.RSS让发布者自动发布信息,也使读者能够聚合和定期更新不同网站的网摘.RSS可以通过以网页或桌面为架构的软件来阅读,即RSS阅读器.新闻聚合器等,并进行定期更新检查.自动下载

RSS阅读器&amp;BT sync

①RSS阅读器? 答:RSS阅读器是一种软件或是说一个程序,这种软件可以自由读取RSS和Atom两种规范格式的文档,且这种读取RSS和Atom文档的软件有多个版本,由不同的人或公司开发,有着不同的名字. Really Simple Syndication “真正简单的聚合”就是RSS的英文原意.把新闻标题.摘要(Feed).内容按照用户的要求,“送”到用户的桌面就是RSS的目的. ②BT sync BT sync 是一个文件同步工具,让你在几台不同的设备之间,同步文件.

RSS Feeds with Spring Boot

http://nixmash.com/post/rss-feeds-with-spring-boot **************************************** We added a RSS Subscription to NixMash Spring Posts in like 10 minutes. Okay, probably longer than that but it was really quick. Here's our feed XML, the Real

JAVA的RSS处理

一:什么是RSS RSS(really simple syndication) :网页内容聚合器.RSS的格式是XML.必须符合XML 1.0规范. RSS的作用:订阅BLOG,订阅新闻二:RSS的历史版本: http://blogs.law.harvard.edu/tech/rssVersionHistory RSS的版本有很多个,0.90.0.91.0.92.0.93.0.94.1.0 和 2.0.与RSS相对的还有ATOM. 国内主要是RSS2.0,国外主要用ATOM0.3. 由于RSS出

php的rss订阅

一般来说我们很少自己造轮子,读取rss还是用git上的开源库吧 https://github.com/dg/rss-php 这个开源库不能读取博客园的rss订阅,新浪微博的格式显示有问题. 博客园的订阅用但是atom而非rss 使用 RSS 和 Atom 实现新闻联合 http://www.zhihu.com/question/19580096 知乎上关于rss的解释 http://www.metsky.com/archives/361.html 订阅基础:RSS.ATOM.FEED.聚合.供稿

国内外php主流开源cms、商城、点评、SNS、DIGG、RSS、分类信息、Wiki汇总

网上商城源代码 源码之家- www.mycodes.net 酷网动力 www.aspcool.com 源码联盟 www.aspsun.com 源码天下 www.pccode.net http://blog.chinaunix.net/space.php?uid=20787846&do=blog&id=1842324      2009年快完了,今年国内PHP开源CMS内容管理系统从程序框架,模版加载到程序功能上都有很大的进步,大部分都采用了自定义模块,自定义模型的方式,同时提供各个CMS都

[转]Flash、Flex、AS3.0框架及类库资源收集之十全大补

原文地址:http://www.d5power.com/portal.php?mod=view&aid=27 APIs.Libs.Components1.as3ebaylibhttp://code.google.com/p/as3ebaylib/2.as3youtubelibhttp://code.google.com/p/as3youtubelib/3.as3flickrlibhttp://code.google.com/p/as3flickrlib/4.Yahoo ASTRA Flash C

关系链的特点之读扩散和写扩散

微博后台架构浅析--读扩散pull.写扩散push.混合模式(push+pull)--相关cache(redis,memcache) 之前在网上看到关于Twitter.Sina以及腾讯微薄的一些实现技术,这个简单做个摘要. 1.读扩散还是写扩散? inbox: 收件箱,你收到的消息,即你所关注的人发布的消息. outbox: 发件箱,你发布的消息. 写扩散(Push) 该方式为每个用户维护一个订阅列表,记录该用户订阅的消息索引(一般为消息ID.类型.发表时间等一些元数据).每当用户发布消息时,都

Asp.Net 构架(Http Handler 介绍) - Part.2

原文地址:http://www.cnblogs.com/JimmyZhang/archive/2007/09/15/894124.html 引言 在 Part.1 Http请求处理流程 一文中,我们了解了Http请求的处理过程以及其它一些运作原理.我们知道Http管道中有两个可用接口,一个是IHttpHandler,一个是IHttpModule,但在Part.1中,我并没有详细讲述如何对它们进行编程,只是轻描淡写地一笔带过.所谓学以致用,前面已经介绍了不少概念和原理.在本文中,我们通过几个范例来