asp.net(c#) RSS¹¦ÄÜʵÏÖ´úÂë

¡¡¡¡¿ÉÄÜ»¹ÓкܶàδÍêÉÆ,µ«ÖÕ¹é¿ÉÒÔʹÓÃÁË,ÒÔºóÔÙÂýÂý¸Ä½ø!!¡¡¡¡

¡¡¡¡ÒÔÏÂÊÇÎÒRSS½çÃæµÄºǫ́´úÂë,¸øÐèÒªµÄÅóÓÑÌṩÏÂÎҵľ­Ñé:¡¡¡¡

¡¡¡¡

¸´ÖÆ´úÂë ´úÂëÈçÏÂ:

¡¡¡¡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;

¡¡¡¡¡¡¡¡}

¡¡¡¡}