rss实现

来源:互联网 发布:老域名购买 编辑:程序博客网 时间:2024/06/12 22:34

可参考
,其中数据库连接部分可以自己替换
<%@   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>

原创粉丝点击