RSS技术 http://community.csdn.net/Expert/topic/5671/5671490.xml?temp=.2223627

<%@ Page Language="C#" AutoEventWireup="true" %>

<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Import Namespace="System.Xml" %>
<%@ Import Namespace="System.IO" %>

<script runat="server">
  string HostUrl;
  string HttpHead ;
  string CateID;

 protected void Page_Load( object sender, EventArgs e )
 {
   if(Request.QueryString["id"] == null)
   {
    Response.Write("<error>error</error>");
    Response.End();
    return;
   }
  CateID = Request.QueryString["id"].ToString();
  int cateid = 0;
  try
  {
    cateid = Convert.ToInt32(CateID);
  }
  catch(Exception xx)
  {
    Response.Write("<error>no number</error>");
    Response.End();
    return;
  }
 
  XmlDocument doc = new XmlDocument();
  doc.Load(Server.MapPath("reslib.config"));
  string DataSource,UserID,Password;
  XmlNode node = doc.SelectSingleNode("/configuration/company/product[@name = 'reslib']");
  if(node == null)
  {
    node = doc.SelectSingleNode("/configuration/system");
  }
 
  if(node == null)
  {
    Response.Write("<error>no config node</error>");
    Response.End();
    return;
  }
 
  DataSource = node.SelectSingleNode("add[@key = 'DataSource']/@value").InnerText;
  UserID = node.SelectSingleNode("add[@key = 'UserID']/@value").InnerText;
  Password = node.SelectSingleNode("add[@key = 'Password']/@value").InnerText;
  string ConnectionString = "Data Source=" + DataSource + ";Initial Catalog=reslib5;User Id=" + UserID + ";Password=" + Password + ";";
  SqlConnection cn = new SqlConnection(ConnectionString);
  cn.Open();
 
 
  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 R_Title,R_Href,R_createdate From T_Resource";
 SqlCommand cmd = new SqlCommand(sql,cn);
 SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
 DateTime dt;
 while(dr.Read())
 {
  AddRSSItem(writer,(((DateTime)dr["R_createdate"]).ToUniversalTime()).ToString("r"),dr["R_Title"].ToString(),HostUrl + dr["R_Href"].ToString());

 }
 dr.Close();
 cn.Close();
 cn = null;

 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();  
 
  dr.Close();
  cn.Dispose(); 
  }
 
  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/");
  writer.WriteAttributeString("xmlns:blogChannel","http://backend.userland.com/blogChannelModule");
  writer.WriteAttributeString("xmlns:copyRight","http://dotnet.aspx.cc/");
  return writer;
 }

  private XmlTextWriter WriteRSSHeadChennel(XmlTextWriter writer)
  {
   writer.WriteStartElement("channel");
   writer.WriteElementString("title","最新资源");
   writer.WriteElementString("link","http://" + HostUrl + "/");
   writer.WriteElementString("description","孟宪会");
   writer.WriteElementString("copyright","孟宪会 ");
   writer.WriteElementString("generator","孟宪会 RSS 生成器 2.0");
   return writer;
  }
  
  private XmlTextWriter AddRSSItem(XmlTextWriter writer, string pubDate, string sItemTitle, string sItemLink)
  {
   writer.WriteStartElement("item");
   writer.WriteElementString("title",sItemTitle);
   writer.WriteElementString("link",sItemLink);
   writer.WriteElementString("description",sItemTitle);
   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;
  }
</script>
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值