.NET 3.5 : 读写RSS或者ATOM

.NET 3.5 : 读写RSS或者ATOM,第1张

在.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

.NET 3.5 : 读写RSS或者ATOM

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/zaji/1006955.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-22
下一篇2022-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存