您的位置:首页 > 编程语言 > ASP

asp.net(c#) RSS功能实现代码

2011-02-14 11:33 465 查看
using System;

using System.Data;

using System.Configuration;

using System.Collections;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls; 

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.Data;

using System.Data.SqlClient;

using System.Xml;

using System.IO;

using System.Web.Configuration;

public partial class rss : System.Web.UI.Page

{

    string   HostUrl; 

    string   HttpHead;

    protected void Page_Load(object sender, EventArgs e)

    {

        HttpContext context = HttpContext.Current;

        HostUrl = context.Request.Url.ToString();

        HostUrl = HostUrl.Substring(0, HostUrl.IndexOf("/", 8));

        XmlTextWriter writer = new XmlTextWriter(context.Response.OutputStream, System.Text.Encoding.UTF8);

        WriteRSSPrologue(writer);

        WriteRSSHeadChennel(writer);

        string sql = "select top 10 title,id,time,content from blog_title order by time desc";

        SqlDataReader dr = dbconn.ExecuteReader(sql);

        while (dr.Read())

        {

            AddRSSItem(writer, (((DateTime)dr["time"]).ToUniversalTime()).ToString("r"), dr["title"].ToString(), HostUrl, dr["content"].ToString());

        }

        dr.Close();

        writer.Flush();

        writer.Close();

        context.Response.ContentEncoding = System.Text.Encoding.UTF8;

        context.Response.ContentType = "text/xml";

        context.Response.Cache.SetCacheability(HttpCacheability.Public);

        context.Response.End();

    }

    private XmlTextWriter WriteRSSPrologue(XmlTextWriter writer)

    {

        writer.WriteStartDocument();

        writer.WriteStartElement("rss");

        writer.WriteAttributeString("version", "2.0");

        writer.WriteAttributeString("xmlns:dc", "http://purl.org/dc/elements/1.1/");

        writer.WriteAttributeString("xmlns:trackbac", "http://madskills.com/public/xml/rss/module/trackback/");

        writer.WriteAttributeString("xmlns:wfw", "http://wellformedweb.org/CommentAPI/");

        writer.WriteAttributeString("xmlns:slash", "http://purl.org/rss/1.0/modules/slash/");

        return writer;

    }

    private XmlTextWriter WriteRSSHeadChennel(XmlTextWriter writer)

    {

            writer.WriteStartElement("channel");

            writer.WriteElementString("title", "编程博客(Nickeyj's Blog) - 最新日志");

            writer.WriteElementString("link", HostUrl + "/ ");

            writer.WriteElementString("description", "编程博客(Nickeyj's Blog)");

            writer.WriteElementString("copyright", "2008 www.52bcnet.com");

            writer.WriteElementString("generator", "编程博客(Nickeyj's Blog)   RSS   生成器   2.0 ");

        return writer;

    }

    private XmlTextWriter AddRSSItem(XmlTextWriter writer, string pubDate, string sItemTitle, string sItemLink, string sItemDescription)

    {

        writer.WriteStartElement("item");

        writer.WriteElementString("title", sItemTitle);

        writer.WriteElementString("link", sItemLink);

        writer.WriteElementString("description", sItemDescription);

        writer.WriteElementString("pubDate", pubDate);

        writer.WriteEndElement();

        return writer;

    }

    private XmlTextWriter AddRSSItem(XmlTextWriter writer, string sItemTitle, string sItemLink, string sItemDescription, bool bDescAsCDATA)

    {

        writer.WriteStartElement("item");

        writer.WriteElementString("title", sItemTitle);

        writer.WriteElementString("link", sItemLink);

        if (bDescAsCDATA == true)

        {

            writer.WriteStartElement("description");

            writer.WriteCData(sItemDescription);

            writer.WriteEndElement();

        }

        else

        {

            writer.WriteElementString("description", sItemDescription);

        }

        writer.WriteElementString("pubDate", DateTime.Now.ToString("r"));

        writer.WriteEndElement();

        return writer;

    }

    private XmlTextWriter WriteRSSClosing(XmlTextWriter writer)

    {

        writer.WriteEndElement();

        writer.WriteEndElement();

        writer.WriteEndDocument();

        return writer;

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: