如何实现站点的RSS输出

来源:互联网 发布:app软件著作权模板 编辑:程序博客网 时间:2024/05/08 23:44

关于Rss
 
RSS是共享内容的一种简易方式,也称聚合.通常被用于新闻和Blog。网站提供RSS输出,有利于让用户发现网站内容的更新。网站用户可以借助于支持RSS的新闻聚合工具软件或者在线网站(如BLOGLINES),订阅网站的内容并在不打开网站页面的情况下阅读内容。

RSS是基于XML的一种形式,具体规范我就不说了,下面是如何使用ASP.NET实现


通知浏览器网站提供了RSS输出:
把下面的这句放在博客或这站点的<head>标签中

<link id="RSSLink" title="RSS" type="application/rss+xml" rel="alternate" href="http://www.cnblogs.com/lbk/rss.aspx" />

创建RSS.ASPX文件
只留下面这一行,其余的都删掉。

<%@ Page language="c#" Codebehind="Rss.aspx.cs" AutoEventWireup="false" Inherits="Test.Rss" %>

后台代码;Rss.aspx.cs
这里XML文件内容的输出是采用直接输出字符串的形式,在我看来前者比较简单,你也可以使用XmlTextWriter来实现。

private void Page_Load(object sender, System.EventArgs e)
  {   
    Response.ContentType="text/xml";
    Response.Charset = "UTF-8";
    Response.Write("<?xml version=/"1.0/" encoding=/"UTF-8/" ?>");
    Response.Write("<rss version=/"2.0/"><channel>");

    Response.Write(GetUserRSS());  
    GetItemsRss();
 
    Response.Write("</channel></rss>");  
}
//此RSS的一些信息
private string GetUserRSS(NewTaokee.Model.Users user)
    {
        StringBuilder strRss = new StringBuilder();
        strRss.Append("<title>lbk</title>");
        strRss.Append("<link>lbk.cnblogs.com</link> ");
        strRss.Append("<description>呵呵,就是我</description> ");
        strRss.Append("<language>zh-cn</language>");
        strRss.Append("<generator>www.xiaoqian.cn </generator>");
        return strRss.ToString();
    }
//循环读取RSS中的每个ITEM的内容
private string getRss(IList<Model.Info> listInfo)
    {
        StringBuilder strRss = new StringBuilder();
        foreach (Model.Info var in listInfo)
        {
            string nickname = DAL.Users.instance.GetModelBasic(var.Author).NickName;
            string content = Function.ReplaceHtml(var.Content);
            content = Function.ReplaceXml(content);
            content = (content.Length > 300) ? content.Substring(0, 300) + "" : content;
            string link = Function.getConfig("MyUrl") + nickname + "/blog/item/" + var.id;

            strRss.Append("<item>");
            strRss.Append("<title>" + Function.ReplaceXml(var.Title) + "</title>");
            strRss.Append("<author>" + nickname + "</author>");
            strRss.Append("<description><![CDATA[" + content + "<p><a href='" + link + "'>查看全文</a>" + "]]></description>");
            strRss.Append("<pubDate>" + var.Adddate.ToString() + "</pubDate>");
            strRss.Append("<link>" + link + "/</link>");
            strRss.Append("</item>");
        }
        return strRss.ToString();
    }

XML中的特殊字符的过滤(否则生成的XML文件会出错):
public static string ReplaceXml(string msg)
    {
        if (msg != "" && msg != null)
        {
            msg = msg.Replace("&", "%26");
            msg = msg.Replace(">", "&gt;");
            msg = msg.Replace("<", "&lt;");
            msg = msg.Replace("/"", "&quot;");
            msg = msg.Replace("'", "&apos;");
        }
        return msg;
    }
另外要注意的是,如果你的RSS输出的链接中又中文字符的话,
如: cnblogs.com/你好/rss.aspx,
最好能使用Server.UrlEncode("你好"),编码之后才能使用抓虾等订阅
http://www.cnblogs.com/lbk/archive/2006/11/14/560202.html

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 减肥减的胸小了怎么办 手机刷机变砖了怎么办 手部肌肉萎缩了怎么办 龙吐珠花冻着了怎么办 发财树浇水多了怎么办 发财树根部烂了怎么办 发财树的根烂了怎么办 淘米水发酵臭了怎么办 眼睛下的小细纹怎么办 内眼角开的太小怎么办 做完美瞳眼睛红怎么办 纹完眼线眼睛红怎么办 21岁眼下小细纹怎么办 20岁眼部有细纹怎么办 纹身几天后晕色怎么办 屁眼长了痔疮大怎么办 苹果os系统坏了怎么办 苹果6出现白苹果怎么办 苹果平板白屏了怎么办 腿上的皮肤很干怎么办 鱼身上掉了鳞片怎么办 患上恋爱恐慌症怎么办 我觉得活着好累怎么办 我的世界遇到him怎么办 孕妇闻了樟脑球怎么办 电脑不能识别u盘怎么办 电脑识别不了u盘怎么办 神之子武器爆了怎么办 中控本考试没过怎么办 震后安全逃生后怎么办 逃出电梯游戏2关怎么办 车尾灯灯罩破了怎么办 着火了吸入了烟怎么办 多媒课件着火了怎么办 用手楚了眼睛疼怎么办 眼睛又痒又干涩怎么办 比熊吃了奥利奥怎么办 怪物猎人x迷路了怎么办 3ds被破解任天堂怎么办 多肉植物焉了怎么办 文竹的叶子干了怎么办