添加RSS到asp.net网站
1. RSS也叫聚合RSS是在线共享内容的一种简易方式(也叫聚合内容,Really Simple Syndication)。通常在时效性比较强的内容上使用RSS订阅能更快速获取信息,网站提供RSS输出,有利于让用户获取网站内容的最新更新。
以下是RSS 2.0的代码样例
<!-- XML版本和字符集 -->
<?xml version="1.0"?>
<!-- RSS版本 -->
<rss version="2.0">
<!-- 以下为频道信息及新闻列表 -->
<channel>
<!-- 频道总体信息:开始 -->
<!-- 频道标题 -->
<title>Lift Off News</title>
<!-- 频道链接的总地址 -->
<link>http://liftoff.msfc.nasa.gov/</link>
<!-- 频道描述文字 -->
<description>Liftoff to Space Exploration.</description>
<!-- 频道使用的语言(zh-cn表示简体中文) -->
<language>en-us</language>
<!-- 频道发布的时间 -->
<pubDate>Tue, 10 Jun 2003 04:00:00 GMT</pubDate>
<!-- 频道最后更新的时间-->
<lastBuildDate>Tue, 10 Jun 2003 09:41:01 GMT</lastBuildDate>
<docs>http://blogs.law.harvard.edu/tech/rss</docs>
<!-- 频道生成器 -->
<generator>Weblog Editor 2.0</generator>
<managingEditor>editor@example.com</managingEditor>
<webMaster>webmaster@example.com</webMaster>
<ttl>5</ttl>
<!-- 频道总体信息:结束 -->
<!-- 每条RSS新闻信息都包含在item节点中, -->
<item>
<!-- 新闻标题 -->
<title>Star City</title>
<!-- 新闻链接地址 -->
<link>http://liftoff.msfc.nasa.gov/news/2003/news-starcity.asp</link>
<!-- 新闻内容简要描述 -->
<description>How do Americans get ready to work with Russians aboard the
International Space Station? They take a crash course in culture, language
and protocol at Russia's Star City.</description>
<!-- 新闻发布时间 -->
<pubDate>Tue, 03 Jun 2003 09:39:21 GMT</pubDate>
<!-- 新闻目录 -->
<category>IT</category>
<!-- 新闻作者 -->
<author>bill</author>
<guid>http://liftoff.msfc.nasa.gov/2003/06/03.html#item573</guid> </item>
2. 如何添加RSS订阅(用于后台管理系统)
代码如下:
XmlDocument doc = new XmlDocument();
if (this.txtRssUrl.Text != "")
{
try
{
//创建保存RSS新闻的类
RssDB rssdb = new RssDB();
rssdb.AddDate = DateTime.Now;
int rsscount=0;
doc.Load(this.txtRssUrl.Text.Trim());
XmlNodeList nodelist = doc.GetElementsByTagName("item");
int rssLoadCount =Convert.ToInt32(this.txtRssCount.Text.Trim());
int i = 0;
if (doc.HasChildNodes)
{
foreach (XmlNode node in nodelist)
{
i += 1;
if (node.HasChildNodes)
{
foreach (XmlNode node1 in node.ChildNodes)
{
switch (node1.Name)
{
case "title":
rssdb.Title=node1.InnerText;
break;
case "link":
rssdb.Url = node1.InnerText;
break;
case "description":
rssdb.Description = node1.InnerText;
break;
case "pubDate":
rssdb.AddDate = DateTime.Now;
break;
}
}
rsscount = RssDBBLL.AddRssDB(rssdb);
}
if (i > rssLoadCount)
break;
}
if (rsscount >0)
{
Response.Redirect("RssManager.aspx");
}
}
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
}
然后订阅其他网站,就保存到网站的数据库,以便与显示
3. 如何显示RSS(用于前台显示页面)
<asp:repeater id="Repeater1" runat="server">
<HeaderTemplate>
<%-- <?xml version="1.0" encoding="GB2312" ?> --%>
<rss version="2.0">
<channel>
<title> </title>
<link> </link>
<description> </description>
<%-- <language>zh_cn</language>--%>
<pubdate><%=DateTime.Now%></pubdate>
<%-- <image>
<title><%=Title%></title>
<url></url>
<link><%=Url%></link>
</image>--%>
</HeaderTemplate>
<ItemTemplate>
<item>
<title><%# FormatForXML(DataBinder.Eval(Container.DataItem, "Title"))%></title>
<%-- <description><![CDATA[<%# FormatForXML(DataBinder.Eval(Container.DataItem,"Content")) %>]]></description> --%>
<link>http://www.fybc.net/Newsfybc.aspx?newsId=<%# DataBinder.Eval(Container.DataItem, "NewsId")%></link>
<%-- <description>[<%# FormatForXML(DataBinder.Eval(Container.DataItem,"Content")) %>]</description> --%>
<%--<description>[<%# DataBinder.Eval(Container.DataItem,"Content") %>]</description> --%>
<pubdate><%# String.Format("{0:D}", DataBinder.Eval(Container.DataItem, "AddDate"))%></pubdate>
</item>
</ItemTemplate>
<FooterTemplate>
</channel>
</rss>
</FooterTemplate>
</asp:repeater>
后台代码:
//声明三个受保护类型的字符串。
protected string Titles = "";
protected string Url = "";
protected string AddDate = "";
protected string Description = "";
protected string FromWhere = "";
//page_load中或者你自己定义个方法
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Titles = "";
Description = "";
Url = @"website";
AddDate = String.Format("{0:D}", DateTime.Now);
// Response.ContentType = "text/xml";
string sqlNews = "select top 20 * from News order by AddDate desc";
string sqltxt = "select top 10 * from RssDB order by AddDate desc";
string sqltxtAll = "select * from RssDB order by AddDate desc";
DataTable dt = DBConnection(sqlNews);//此类下面将提到。
this.Repeater1.DataSource = dt;
this.Repeater1.DataBind();
//this.Repeater1.DataSource = NewsBLL.GetAllNewsRetrunList();
//this.Repeater1.DataBind();
}
}
//定义一个函数。如果你看了最前面的html代码,你就会发现有个formatforxml(..)
protected string FormatForXML(object input)
{
string data = input.ToString();
data = data.Replace("'", "'");
data = data.Replace("<", "<");
data = data.Replace(">", ">");
return data;
}
//DB.DBConnection(string sqltxt)解析,其实他的目的就是返回一个datatable
public static DataTable DBConnection(string sqlstr)
{
DataSet ds = SqlHelper.GetInfoDataSet(sqlstr);
return ds.Tables[0];//返回该对象
}