ASP.NET做網站RSS閱讀
一/在本機建立RSS虛擬目錄,再建立測試用的數據庫:(在這裏為了測試方便,使用Access庫,名稱為:db1.mdb),建一個表Article
內有:id,title,Description,Url,Author,Pubdate字段,再錄入適量數據,以便測試
二/打開VS,新建項目
在這個測試項目裏,共有三個文件,相關代碼如下
1-: Default.aspx(首頁)
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Web_Rss._Default" %>
<html>
<head runat="server">
<title>RSS閱讀--首頁</title>
<link rel="alternate" type="application/rss+xml" title="JPC RSS" href="http://127.0.0.1/RSS/Rss.aspx" />
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="Rss.aspx">RSS閱讀</asp:HyperLink>
</div>
</form>
</body>
</html>
2-RSS.cs (類文件,公用的產生RSS源的類)
using System;
using System.IO;
using System.Data;
using System.Xml;
using System.Collections.Generic;
using System.Text;
public class RSS {
//實際工作時,下列公有變數需定義為屬性
//如private Stream OutputStream=null;
//public Stream OutputStream
//{
// get
// {
// return OutputStream;
// }
// set
// {
// OutputStream = value;
// }
//}
public Stream OutputStream;
public string RssTitle;
public string PublisherUrl;
public string Description;
public string Copyright;
public string Generator;
public DataSet ItemSource;
public string ItemTitleField;
public string ItemUrlField;
public string ItemDescriptionField;
public string ItemPublicationDateField;
public string ItemAuthor;
/// <summary>
/// Create RSS
/// </summary>
/// <param name="r">Rss</param>
public static void PublishRss(RSS r)
{
XmlTextWriter writer = new XmlTextWriter(r.OutputStream, Encoding.UTF8);
writer.WriteStartDocument();
writer.WriteStartElement("rss");
writer.WriteAttributeString("version", "2.0");
writer.WriteStartElement("channel");
writer.WriteElementString("title", r.RssTitle);
writer.WriteElementString("link", r.PublisherUrl);
writer.WriteElementString("description", r.Description);
writer.WriteElementString("copyright", r.Copyright);
writer.WriteElementString("generator", r.Generator);
foreach (DataRow row in r.ItemSource.Tables[0].Rows) {
writer.WriteStartElement("item");
writer.WriteElementString("author", row[r.ItemAuthor].ToString());
writer.WriteElementString("title", row[r.ItemTitleField].ToString());
//writer.WriteElementString("link", row[r.ItemUrlField].ToString());
writer.WriteElementString("link", "http://127.0.0.1/RSS/read.aspx?id=" + row[r.ItemUrlField].ToString());
writer.WriteElementString("description", row[r.ItemDescriptionField].ToString());
//writer.WriteElementString("pubDate", Convert.ToDateTime(row[r.ItemPublicationDateField]).ToString("dd MMM yyyy hh:mm:00 "));
writer.WriteElementString("pubDate", GetRssDate(row[r.ItemPublicationDateField]));
writer.WriteEndElement();
}
writer.WriteEndElement();
writer.WriteEndElement();
writer.Flush();
}
public static string GetRssDate(Object date)
{
DateTime rssDate = Convert.ToDateTime(date);
string[] monthName = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
StringBuilder sb = new StringBuilder();
sb.Append(rssDate.Day);
sb.Append(" ");
sb.Append(monthName[Convert.ToInt32(rssDate.Month) - 1]);
sb.Append(" ");
sb.Append(rssDate.Year);
sb.Append(" ");
sb.Append(rssDate.ToLongTimeString());
return sb.ToString();
}
}
3-:Rss.aspx.cs(以RSS閱讀方式顯示數據)
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Data.OleDb;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
namespace Web_Rss
{
public partial class Rss : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
DataSet ds = GetDataSet();
RSS rss = new RSS();
rss.OutputStream = Response.OutputStream;
rss.RssTitle = "以RSS方式閱讀本站文章";
rss.PublisherUrl = "http://127.0.0.1/RSS/"; // Request.Url.Host;
rss.Description = "RSS JPC";
rss.Copyright = "Copyright (C) JPC.";
rss.Generator = "JPC RSS Generator";
rss.ItemSource = ds;
rss.ItemTitleField = "Title";
rss.ItemDescriptionField = "Description";
rss.ItemPublicationDateField = "Pubdate";
//rss.ItemUrlField = "Url";
rss.ItemUrlField = "id";
rss.ItemAuthor = "Author";
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.ContentType = "text/xml";
RSS.PublishRss(rss);
Response.End();
}
public DataSet GetDataSet()
{
//SqlConnection conn = new SqlConnection("你的連接字符串");
//string sql = "Select * From Article Order By ArticleId Desc";
//SqlDataAdapter da = new SqlDataAdapter(sql, conn);
//DataSet ds = new DataSet();
//da.Fill(ds, "Article");
//return ds;
string strAccessConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
+ this.Server.MapPath("db1.mdb");
OleDbConnection myAccessConn = new OleDbConnection(strAccessConn);
OleDbCommand myAccessCommand = new OleDbCommand("Select * From Article Order By id Desc", myAccessConn);
OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(myAccessCommand);
myAccessConn.Open();
DataSet myDataSet = new DataSet();
myDataAdapter.Fill(myDataSet, "Article");
myAccessConn.Close();
return myDataSet;
}
}
}
內有:id,title,Description,Url,Author,Pubdate字段,再錄入適量數據,以便測試
二/打開VS,新建項目
在這個測試項目裏,共有三個文件,相關代碼如下
1-: Default.aspx(首頁)
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Web_Rss._Default" %>
<html>
<head runat="server">
<title>RSS閱讀--首頁</title>
<link rel="alternate" type="application/rss+xml" title="JPC RSS" href="http://127.0.0.1/RSS/Rss.aspx" />
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="Rss.aspx">RSS閱讀</asp:HyperLink>
</div>
</form>
</body>
</html>
2-RSS.cs (類文件,公用的產生RSS源的類)
using System;
using System.IO;
using System.Data;
using System.Xml;
using System.Collections.Generic;
using System.Text;
public class RSS {
//實際工作時,下列公有變數需定義為屬性
//如private Stream OutputStream=null;
//public Stream OutputStream
//{
// get
// {
// return OutputStream;
// }
// set
// {
// OutputStream = value;
// }
//}
public Stream OutputStream;
public string RssTitle;
public string PublisherUrl;
public string Description;
public string Copyright;
public string Generator;
public DataSet ItemSource;
public string ItemTitleField;
public string ItemUrlField;
public string ItemDescriptionField;
public string ItemPublicationDateField;
public string ItemAuthor;
/// <summary>
/// Create RSS
/// </summary>
/// <param name="r">Rss</param>
public static void PublishRss(RSS r)
{
XmlTextWriter writer = new XmlTextWriter(r.OutputStream, Encoding.UTF8);
writer.WriteStartDocument();
writer.WriteStartElement("rss");
writer.WriteAttributeString("version", "2.0");
writer.WriteStartElement("channel");
writer.WriteElementString("title", r.RssTitle);
writer.WriteElementString("link", r.PublisherUrl);
writer.WriteElementString("description", r.Description);
writer.WriteElementString("copyright", r.Copyright);
writer.WriteElementString("generator", r.Generator);
foreach (DataRow row in r.ItemSource.Tables[0].Rows) {
writer.WriteStartElement("item");
writer.WriteElementString("author", row[r.ItemAuthor].ToString());
writer.WriteElementString("title", row[r.ItemTitleField].ToString());
//writer.WriteElementString("link", row[r.ItemUrlField].ToString());
writer.WriteElementString("link", "http://127.0.0.1/RSS/read.aspx?id=" + row[r.ItemUrlField].ToString());
writer.WriteElementString("description", row[r.ItemDescriptionField].ToString());
//writer.WriteElementString("pubDate", Convert.ToDateTime(row[r.ItemPublicationDateField]).ToString("dd MMM yyyy hh:mm:00 "));
writer.WriteElementString("pubDate", GetRssDate(row[r.ItemPublicationDateField]));
writer.WriteEndElement();
}
writer.WriteEndElement();
writer.WriteEndElement();
writer.Flush();
}
public static string GetRssDate(Object date)
{
DateTime rssDate = Convert.ToDateTime(date);
string[] monthName = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
StringBuilder sb = new StringBuilder();
sb.Append(rssDate.Day);
sb.Append(" ");
sb.Append(monthName[Convert.ToInt32(rssDate.Month) - 1]);
sb.Append(" ");
sb.Append(rssDate.Year);
sb.Append(" ");
sb.Append(rssDate.ToLongTimeString());
return sb.ToString();
}
}
3-:Rss.aspx.cs(以RSS閱讀方式顯示數據)
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Data.OleDb;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
namespace Web_Rss
{
public partial class Rss : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
DataSet ds = GetDataSet();
RSS rss = new RSS();
rss.OutputStream = Response.OutputStream;
rss.RssTitle = "以RSS方式閱讀本站文章";
rss.PublisherUrl = "http://127.0.0.1/RSS/"; // Request.Url.Host;
rss.Description = "RSS JPC";
rss.Copyright = "Copyright (C) JPC.";
rss.Generator = "JPC RSS Generator";
rss.ItemSource = ds;
rss.ItemTitleField = "Title";
rss.ItemDescriptionField = "Description";
rss.ItemPublicationDateField = "Pubdate";
//rss.ItemUrlField = "Url";
rss.ItemUrlField = "id";
rss.ItemAuthor = "Author";
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.ContentType = "text/xml";
RSS.PublishRss(rss);
Response.End();
}
public DataSet GetDataSet()
{
//SqlConnection conn = new SqlConnection("你的連接字符串");
//string sql = "Select * From Article Order By ArticleId Desc";
//SqlDataAdapter da = new SqlDataAdapter(sql, conn);
//DataSet ds = new DataSet();
//da.Fill(ds, "Article");
//return ds;
string strAccessConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
+ this.Server.MapPath("db1.mdb");
OleDbConnection myAccessConn = new OleDbConnection(strAccessConn);
OleDbCommand myAccessCommand = new OleDbCommand("Select * From Article Order By id Desc", myAccessConn);
OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(myAccessCommand);
myAccessConn.Open();
DataSet myDataSet = new DataSet();
myDataAdapter.Fill(myDataSet, "Article");
myAccessConn.Close();
return myDataSet;
}
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.