用Asp.net生成RSS文件,以便Rss阅读器订阅

来源:其它 http://blog.csdn.net/zlp321002/ 作者:龙卷风
1.环境如下:
A:数据库环境:
    SQLServer2005(数据库实例:机器名+SQLServer2005)
B:开发环境
     Vs2005.net
2.数据库
Create table Tb_Test(ID  int identity(1,1),Title varchar(20), Description varchar(100), AddDate datetime default(getdate()))
go
insert into tb_test(Title,Description)
select '中国新闻','新华社网公司'
union all
select '中央新闻','中央电视台'
union all
select '国际新闻','国际广播'
union all
select '环球新闻','环球广播'
union all
select '凤凰新闻','凤凰卫视'
go Web.config
<?xml version="1.0"?>
<!--
    注意: 除了手动编辑此文件以外,您还可以使用
    Web 管理工具来配置应用程序的设置。可以使用 Visual Studio 中的
     “网站”->“Asp.Net 配置”选项。
    设置和注释的完整列表在
    machine.config.comments 中,该文件通常位于
    WindowsMicrosoft.NetFrameworkv2.xConfig 中
-->
<configuration>
    <appSettings>
        <add key="Db_cfgConn" value="server=.SQLSERVER2005;database=Test_DB;uid=sa;pwd=ylwtsmt"/>
    </appSettings>
    <connectionStrings/>
    <system.web>
        <!--
            设置 compilation debug="true" 将调试符号插入
            已编译的页面中。但由于这会
            影响性能,因此只在开发过程中将此值
            设置为 true。
        -->
        <compilation debug="true"/>
        <!--
            通过 <authentication> 节可以配置 ASP.NET 使用的
            安全身份验证模式,
            以标识传入的用户。
        -->
        <authentication mode="Windows"/>
        <!--
            如果在执行请求的过程中出现未处理的错误,
            则通过 <customErrors> 节可以配置相应的处理步骤。具体说来,
            开发人员通过该节可以配置
            要显示的 html 错误页
            以代替错误堆栈跟踪。
        <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
            <error statusCode="403" redirect="NoAccess.htm" />
            <error statusCode="404" redirect="FileNotFound.htm" />
        </customErrors>
        -->
    </system.web>
</configuration>VS.net 代码:
GetRSS类代码:
using System;
using System.Data;
using System.Configuration;
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.IO;
public class GetRss
...{
    /**//// <summary>
    /// 根据文件路径写RSS文件
    /// </summary>
    /// <remarks>
    /// 例如: 
    ///  WriteRss("D:Vs2005GenerateRssRSS_Folder est_tb.xml","test_tb")
    /// 注意:根据表的结构,需要调整生成的RSS源。本实例仅供测试用。
    /// </remarks>
    /// <param name="pathfilename">文件路径</param>
    /// <param name="tablename">表名</param>
    /// <returns>true or false</returns>
    public static bool WriteRss(string pathfilename,string tablename)
    ...{
        try
        ...{
            FileInfo finfo = new FileInfo(pathfilename);
            using (FileStream fs = finfo.OpenWrite())
            ...{
                StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.GetEncoding("UTF-8"));
                sw.WriteLine(GetRss.GetRSSString(tablename));
                sw.Flush();
                sw.Close();
            }
            return true;
        }
        catch (System.Exception ex)
        ...{
            System.Web.HttpContext.Current.Response.Write(ex.Message);
            return false;
            throw;
        }
    
    }
    /**//// <summary>
    /// 组织符合最新标准的RSS字符串
    /// 参数:表名。
    /// </summary>
    /// <remarks>
    /// 例如: 
    ///  GetRSS()
    /// 注意:根据表的结构,需要调整生成的RSS源。本实例仅供测试用。
    /// </remarks>
    /// <param name="tablename">表名</param>
    /// <returns>返回一个DataSet 数据源</returns>
    public static string GetRSSString(string Tablename)
    ...{
        try
        ...{
            DataSet ds = GetRSSData(Tablename);
            string strRSS = "";
            strRSS = strRSS + "  <?xml version="1.0"?> " + System.Environment.NewLine;
            strRSS = strRSS + "  <rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"" + System.Environment.NewLine;
            strRSS = strRSS + "   xmlns:xsd="http://www.w3.org/2001/XMLSchema"   " + System.Environment.NewLine;
            strRSS = strRSS + "   xmlns:slash="http://purl.org/rss/1.0/modules/slash/" version="2.0">" + System.Environment.NewLine;
            strRSS = strRSS + "  <channel>" + System.Environment.NewLine;
            strRSS = strRSS + "  <title>订阅标题</title> " + System.Environment.NewLine;
            strRSS = strRSS + "  <link>http://www.**com.cn/</link>" + System.Environment.NewLine;
            strRSS = strRSS + "  <description>描述信息</description>" + System.Environment.NewLine;
            strRSS = strRSS + "  <language>zh-CN</language>" + System.Environment.NewLine;
            strRSS = strRSS + "  <generator>www.**com.cn</generator>  " + System.Environment.NewLine;
            strRSS = strRSS + "  <copyright>北京**公司</copyright> " + System.Environment.NewLine;
            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            ...{
                strRSS = strRSS + " <item>" + System.Environment.NewLine;
                strRSS = strRSS + " <title>" + ds.Tables[0].Rows[i]["Title"] + "</title> " + System.Environment.NewLine;
                strRSS = strRSS + " <link>http://www.**.com.cn/ArticleShow@" + ds.Tables[0].Rows[i]["ID"] + ".html</link> " + System.Environment.NewLine;
                strRSS = strRSS + " <author /> " + System.Environment.NewLine;
                strRSS = strRSS + " <guid>http://www.**.com.cn/ArticleShow@" + ds.Tables[0].Rows[i]["ID"] + ".html</guid>   " + System.Environment.NewLine;
                strRSS = strRSS + " <pubDate>" + Convert.ToDateTime(ds.Tables[0].Rows[i]["AddDate"].ToString()).ToString("yyyy-MM-dd HH:mm") + "</pubDate> " + System.Environment.NewLine;
                strRSS = strRSS + " <comments>http://www.**.com.cn/ArticleShow@" + ds.Tables[0].Rows[i]["ID"] + ".html</comments>   " + System.Environment.NewLine;
                strRSS = strRSS + " <slash:comments>0</slash:comments>    " + System.Environment.NewLine;
                strRSS = strRSS + " <source url="http://www.**.com.cn/ArticleShow@" + ds.Tables[0].Rows[i]["ID"] + ".html">" + ds.Tables[0].Rows[i]["Title"] + " </source>    " + System.Environment.NewLine;
                strRSS = strRSS + " <description>" + ds.Tables[0].Rows[i]["Description"] + "</description>" + System.Environment.NewLine;
                strRSS = strRSS + " </item>" + System.Environment.NewLine;
            }
            strRSS = strRSS + " </channel>" + System.Environment.NewLine;
            strRSS = strRSS + " </rss>" + System.Environment.NewLine;
            return strRSS;
        }
        catch (Exception ex)
        ...{
            System.Web.HttpContext.Current.Response.Write(ex.Message);
            throw;
        }
    }

    /**//// <summary>
    /// 获取RSS数据源
    /// 参数:表名。
    /// </summary>
    /// <remarks>
    /// 例如: 
    ///  DataSet ds = GetRSSData(TableName)
    /// 注意:根据表的结构,需要调整生成的RSS源。本实例仅供测试用。
    /// </remarks>
    /// <param name="Tablename">表名</param>
    /// <returns>返回一个DataSet 数据源</returns>
    public static DataSet GetRSSData(string Tablename)
    ...{
        String DBConnStr = System.Configuration.ConfigurationManager.AppSettings["Db_cfgConn"];
        System.Data.SqlClient.SqlDataAdapter DataAdapter = new System.Data.SqlClient.SqlDataAdapter();
        System.Data.SqlClient.SqlConnection Connection = new System.Data.SqlClient.SqlConnection(DBConnStr);
        if (Connection.State != ConnectionState.Open)
        ...{
            Connection.Open();
        }
        try
        ...{
            System.Data.SqlClient.SqlCommand Command = new System.Data.SqlClient.SqlCommand("SELECT @COLUMNS=@COLUMNS+','+NAME FROM SYS.COLUMNS WHERE OBJECT_ID=OBJECT_ID(@TABLENAME)  ORDER BY  column_id  SET @COLUMNS='SELECT '+STUFF(@COLUMNS,1,1,'')+' FROM '+@TABLENAME+''  EXEC(@COLUMNS) ", Connection);
            Command.CommandType = CommandType.Text;
            Command.Parameters.Add("@TABLENAME", SqlDbType.VarChar, 20);
            Command.Parameters["@TABLENAME"].Value = Tablename;
            Command.Parameters.Add("@COLUMNS", SqlDbType.VarChar, 2000);
            Command.Parameters["@COLUMNS"].Value = "";
            Command.ExecuteNonQuery();
            DataAdapter.SelectCommand = Command;
            DataSet DataSet = new DataSet();
            if (DataSet != null)
            ...{
                DataAdapter.Fill(DataSet, "table");
            }
            return DataSet;
           
        }
        catch (System.Exception ex)
        ...{
            System.Web.HttpContext.Current.Response.Write(ex.Message);
            Connection.Close();
            throw;
        }
    }

}
前台代码(注意:html页面无其它html代码)
using System;
using System.Data;
using System.Configuration;
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.IO;
public partial class _Default : System.Web.UI.Page
...{
    protected void Page_Load(object sender, EventArgs e)
    ...{
        string Tablename = "Tb_Test"; //Request.QueryString["TableName"];
        string fname = System.Web.HttpContext.Current.Server.MapPath("RSS_Folder") + "\" + Tablename + ".XML";
        GetRss.WriteRss(fname, Tablename);
    }
}
 

相关文档推荐

DeepSeek 搞钱指令库.PDF

1743659940  0.95MB 22页 积分5

T GDWJ 016 公立医院全面预算管理工作指南.PDF

1743652887  1.62MB 79页 积分6

人工智能技术发展与应用实践.PDF

1743586449 史树明 5.88MB 35页 积分6

DeepSeek行业应用案例集解锁.PDF

1743586338  5.03MB 152页 积分6

2025AI大模型产业市场前景及投资研究报告.PDF

1743586288  4.47MB 22页 积分0

AI韧性AI安全的革命性基准模型.PDF

1743586206  1.91MB 38页 积分4

Deepseek大模型生态报告.PDF

1743586174 赛迪 1.26MB 149页 积分6

DeepSeek在金融银行的应用方案.PDF

1743586138  1.12MB 146页 积分6

AI为中心的数字化转型战略理解与落地安排.PDF

1743586083 侯宏 1.42MB 16页 积分5

深度解读 DeepSeek 部署、使用、安全.PDF

1743586019 天津大学 5.47MB 46页 积分6

相关文章推荐