`
isiqi
  • 浏览: 16482767 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

web2.0时代 用Asp.Net写Rss,你会了吗?

阅读更多
RSS是站点与站点之间共享内容的一种简易方式(也称为“聚合内容”),通常被用于新闻和其他按顺序排列的网站,例如Blog网站。网站提供RSS输出,有利于让用户发现网站内容的更新。网站用户可以在客户端借助于类似新闻资讯阅读器等支持RSS的新闻聚合工具软件,在不打开网站内容页面的情况下阅读支持RSS输出的网站内容。
RSS是基于XML的一种形式。并且所有的RSS文件都要遵守万维网联盟(W3C)站点发布的XML 1.0规范。具体格式可以查一下RSS 2.0规范,这里就不再重复粘贴了。

下面是总结的几种RSS的技术实现代码:

1.在线生成RSS聚合页。

(1)创建Rss.aspx
<%@ Page language="c#" Codebehind="Rss.aspx.cs" AutoEventWireup="false" Inherits="LiTianPing.Rss" %>
只留下这一行,其余的都删掉。

(2)后台代码;Rss.aspx.cs

private void Page_Load(object sender, System.EventArgs e)
{
Response.ContentType="text/xml";
Response.Write(GetRSS());
}

/// <summary>
/// 取得聚合文章
/// </summary>
/// <returns></returns>
public string GetRSS()
{
News t=new News();//自己的业务类
DataSet ds=t.GetListByClass(1);//根据类别得到数据

StringBuilder strCode=new StringBuilder();
strCode.Append("<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\" ?>");
strCode.Append("<rss version='2.0' xmlns:dc=\"http://purl.org/dc/elements/1.1/\"");
strCode.Append(" xmlns:trackback=\"http://madskills.com/public/xml/rss/module/trackback/\" ");
strCode.Append(" xmlns:wfw=\"http://wellformedweb.org/CommentAPI/\" xmlns:slash=\"http://purl.org/rss/1.0/modules/slash/\">");
strCode.Append("<channel>");
strCode.Append("<title>李天平RSSDemo</title>");
strCode.Append("<link>http://"+Request.ServerVariables["SERVER_NAME"]+"</link> ");
strCode.Append("<description>天道酬勤</description> ");
strCode.Append("<copyright>Copyright 2005</copyright> ");

foreach(DataRow row in ds.Tables[0].Rows)
{
string Id=row["Id"].ToString();
string title=row["title"].ToString();
string description=row["description"].ToString();
string pubdate=row["pubdate"].ToString();
string ClassId=row["ClassId"].ToString();
//string author=row["author"].ToString();

strCode.Append("<item>");
strCode.Append("<title>"+title+"</title>");
strCode.Append("<link>http://"+Request.ServerVariables["SERVER_NAME"]+"/NewsShow.aspx?ID="+Id+"</link>");
strCode.Append("<subject>"+description+"</subject>");
strCode.Append("<description><![CDATA["+description+"]]></description>");
strCode.Append("<PubDate>"+pubdate+"</PubDate>");
strCode.Append("<category>"+ClassId+"</category>");
strCode.Append("</item>");
}
strCode.Append("</channel>");
strCode.Append("</rss>");
return strCode.ToString();
}

(3) XmlTextWriter实现方式2;Rss.aspx.cs

string xmlDoc="rss.xml";
private void Page_Load(object sender, System.EventArgs e)
{
xmlDoc=Server.MapPath(".")+xmlDoc;
GetRSS2();
XmlDocument doc= new XmlDocument();
doc.Load(xmlDoc);
Response.ContentType = "text/xml";
doc.Save(Response.Output);
}
/// <summary>
/// 取得聚合文章
/// </summary>
/// <returns></returns>
public void GetRSS2()
{
News t=new News();
DataSet ds=t.GetListByClass(1);

XmlTextWriter writer = new XmlTextWriter(xmlDoc,Encoding.UTF8);
writer.Formatting = Formatting.Indented;
writer.WriteStartDocument(true);
writer.WriteComment("RSS页的实现");
writer.WriteStartElement("rss");
writer.WriteAttributeString("version","2.0");
writer.WriteStartElement("channel");
writer.WriteStartElement("title");
writer.WriteString("李天平RSSDemo");
writer.WriteEndElement();
writer.WriteStartElement("link");
writer.WriteString("http://"+Request.ServerVariables["SERVER_NAME"]);
writer.WriteEndElement();
writer.WriteStartElement("description");
writer.WriteString("天道酬勤");
writer.WriteEndElement();
writer.WriteStartElement("copyright");
writer.WriteString("Copyright 2005");
writer.WriteEndElement();
writer.WriteStartElement("language");
writer.WriteString("zh-cn");
writer.WriteEndElement();

foreach(DataRow row in ds.Tables[0].Rows)
{
string Id=row["Id"].ToString();
string title=row["title"].ToString();
string description=row["description"].ToString();
string pubdate=row["pubdate"].ToString();
string ClassId=row["ClassId"].ToString();
//string author=row["author"].ToString();

writer.WriteStartElement("item");
writer.WriteStartElement("title");
writer.WriteString(title);
writer.WriteEndElement();
writer.WriteStartElement("link");
writer.WriteString("http://"+Request.ServerVariables["SERVER_NAME"]+"/NewsShow.aspx?ID="+Id) ;
writer.WriteEndElement();
writer.WriteStartElement("description");
writer.WriteCData(description);
writer.WriteEndElement();
writer.WriteStartElement("pubDate");
writer.WriteString(pubdate);
writer.WriteEndElement();
writer.WriteStartElement("category");
writer.WriteString(ClassId);
writer.WriteEndElement();
writer.WriteEndElement();
}
writer.WriteEndElement();
writer.WriteEndElement();
writer.Flush();
writer.Close();

}

2.在线RSS阅读获取。

页面代码:
<P style="FONT-SIZE: 11px">
Feed种子:<asp:TextBox id="FeedUrl" runat="server" Width="440px"></asp:TextBox><BR>
显示条数:<asp:TextBox id="Num" runat="server" Width="48px"></asp:TextBox></P>
<P style="FONT-SIZE: 11px">
<asp:Button id="GetFeed" runat="server" Text="获得RSS"></asp:Button><BR>
<BR>
<asp:Label id="RssFeed" runat="server"></asp:Label></P>

后台代码:
/// <summary>
/// 获得要显示的Feed种子数据
/// </summary>
/// <param name="RssUrl"></param>
/// <param name="showNewsCount"></param>
/// <returns></returns>
public string LoadRSS(string RssUrl, int showNewsCount)
{
string strRssList = "";
string strMsg;
try
{
XmlDocument objXMLDoc = new XmlDocument();
objXMLDoc.Load(RssUrl);
XmlNodeList objItems = objXMLDoc.GetElementsByTagName("item");

if(showNewsCount > 30)
showNewsCount = 10;
if(showNewsCount < 1)
showNewsCount = objItems.Count;

string title="";
string link="";
int i;

if(objXMLDoc.HasChildNodes == true)
{
i = 1;
foreach(XmlNode objNode in objItems)
{
if(i<=showNewsCount)
{
if(objNode.HasChildNodes == true)
{
XmlNodeList objItemsChild = objNode.ChildNodes;
foreach(XmlNode objNodeChild in objItemsChild)
{
switch(objNodeChild.Name)
{
case "title":
title = objNodeChild.InnerText;
break;
case "link":
link = objNodeChild.InnerText;
break;
}
}
i = i+1;
strRssList += "<a href=" + link +" target=_blank>" + title + "</a><br>";
}
}
}
}
strMsg = strRssList;
}
catch
{
strMsg = "RSS Feed 源数据出错!";
}
return strMsg;
}

//获取按钮,获取指定RSS
private void GetFeed_Click(object sender, System.EventArgs e)
{
if(FeedUrl.Text == "")//RSS地址
{
RssFeed.Text = "信息源不能为空,您可刷新重试或联系管理员!";
return ;
}
RssFeed.Text = LoadRSS(FeedUrl.Text,Convert.ToInt32(Num.Text)); //获取指定数目
}

3.无刷新动态更新的在线RSS阅读获取
<%@ Page language="c#" Codebehind="XmlHttp.aspx.cs" AutoEventWireup="false" Inherits="LiTianPing.XmlHttp" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>XmlHttp</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
<style>td { font-size: 9pt}
</style>
<script>
<!--
var oDiv
var xh
function getXML()
{
xh =new ActiveXObject("Microsoft.XMLHTTP");
oDiv = document.getElementById("rssitem");
oDiv.style.display= "";
try
{
//如果是本地改成下面语句直接读取
//xh.open("GET","/Rss.aspx",false);
xh.open("GET","Http://ltp.cnblogs.com/Rss.aspx",false);
xh.send(null);
loadData(xh,oDiv);
}
catch(e)
{
error(oDiv);
}
}
function loadData(xh,oDiv)
{
if (xh.readyState == 4)
{
xml = xh.responsexml;
var i;
var nodes = xml.selectNodes("/rss/channel/item");
var bloglink = xml.selectSingleNode("/rss/channel/link").text;
oDiv.innerHTML = "";
var html;
for(i=0;i<nodes.length;i++)
{

html += "<div >";
html += " <div >";
html += " <a class=font1 href='" +nodes[i].selectSingleNode("link").text + "' target='_blank'>" + nodes[i].selectSingleNode("title").text +"</a><BR><BR>";
html += " </div>";
html += " <div >";
html += " " +nodes[i].selectSingleNode("description").text;
html += " </div>"
//html += " </div>";
html += "</div><hr>";

}
oDiv.innerHTML = html;
}
else
{
error(oDiv);
}
}

function error(oDiv)
{
oDiv.innerHTML = "载入失败";
}
-->
</script>
</HEAD>
<body MS_POSITIONING="GridLayout" onload="window.setTimeout('getXML()',200);">
<form id="Form1" method="post" runat="server">
<div align=center>
<table cellpadding="0" cellspacing="0" border="0" width="80%">
<tr>
<td>
<div id="rssitem" style="WIDTH:80%">数据载入中...</div>
</td>
</tr>
</table>
</div>
</form>
</body>
</HTML>
分享到:
评论

相关推荐

    Building a Web 2.0 Portal with ASP.NET 3.5

    ### 构建Web 2.0门户站点使用ASP.NET 3.5 #### 知识点一:ASP.NET 3.5与Web 2.0技术整合 **概述:** 本书《构建Web 2.0门户站点使用ASP.NET 3.5》详细介绍了如何利用ASP.NET 3.5构建一个高性能、现代的Web 2.0门户...

    ASP.NET 2.0的web2.0应用

    在Web2.0的时代背景下,ASP.NET 2.0被广泛应用于创建交互性强、用户体验优秀的网络应用。 1. **ASP.NET 2.0的新特性** - **母版页(Master Pages)**:允许开发者创建统一的布局,方便维护网站的整体风格。 - **...

    ASP.NET2.0的Web2.0 电子教程

    通过这个电子教程,你将掌握ASP.NET 2.0与Web2.0的结合应用,从而能够创建功能丰富、用户体验优良的Web应用程序。无论是初学者还是有一定经验的开发者,都能从中获得宝贵的实战经验和理论知识。

    精通ASP.NET2.0的Web2.0+电子教程.rar

    精通ASP.NET2.0的Web2.0+电子教程 本书重点介绍了使用ASP.NET 2.0(C#)技术开发Web 2.0时代的热门网 络应用系统(如RSS、Blog、Tags、Web Servicc、BBS、XML、Ajax、WIKI等 )的方法,以及开发这些系统...

    ASP.net 2.0的web2.0应用-blog、Tags、Rss、Xml和ajax mail

    在ASP.NET 2.0中,可以使用System.Web.Services命名空间下的 SyndicationService 类创建RSS feed,包括标题、描述、链接等信息。同时,提供RSS订阅按钮,用户点击后可以订阅博客文章或新闻。 **XML** XML...

    ASP.NET2.0开发的RSS阅读器(PDF)

    【ASP.NET 2.0开发的RSS阅读器】 ASP.NET 2.0是微软公司推出的一种基于.NET Framework的Web应用程序开发平台,它极大地简化了Web应用的构建过程,提供了丰富的控件、数据绑定机制和内置的安全特性。在这个环境中,...

    ASP.NET RSS订阅

    ASP.NET RSS订阅是一种常见的Web应用程序开发技术,用于创建和分发新闻和其他定期更新的内容。RSS,全称Really Simple Syndication,是一种XML格式,允许用户通过RSS阅读器或聚合器订阅和获取网站的最新内容,无需...

    精通ASP.NET2.0的Web2.0 电子教程

    精通ASP.NET 2.0的Web2.0电子教程可能涵盖以下内容: 1. **基础篇**:讲解ASP.NET 2.0的基础知识,包括安装环境、创建第一个Web应用程序、了解控件模型等。 2. **进阶篇**:深入探讨母版页、站点导航、会员和角色...

    精通asp.net 2.0

    在【压缩包子文件的文件名称列表】中,“精通ASP.NET2.0的Web2.0 电子教程”可能是一个完整的系列教程,包含了多个章节或部分,详细讲解ASP.NET 2.0与Web2.0结合的开发实践。学习者可以期待从这个教程中学习到: 1....

    Web2.0源代码

    这套【Web2.0源代码】对于学习和开发Asp.net Web2.0应用的开发者来说具有很高的参考价值,它展示了如何使用Asp.net和Ajax技术来构建功能丰富、用户友好的Web应用。同时,它也可以作为一个基础模板,用于快速开发类似...

    ASP.NET 2.0+SQL SERVER热门网络应用开发详解 光盘

    本书介绍利用ASP.NET 2.0和SQL Server开发典型网络应用系统的必备知识,重点介绍ASP.NET 2.0的核心控件与使用方法,以及能够提高开发效率的.NET框架——NSpring、NHibernate等。针对现在热门的Web 2.0的开发,本书也...

    Asp.net2.0应用之RSS在线阅读器源码

    【标题】:“Asp.net2.0应用之RSS在线阅读器源码” 【解析】: ASP.NET 2.0 是微软开发的一种用于构建 Web 应用程序的技术,它基于 .NET Framework,提供了丰富的功能和高效的性能。这个源码示例是关于如何在 ASP...

    精通Web 2.0

    该书由Cristian Darie和Karli Watson编写,旨在帮助读者掌握使用ASP.NET 2.0框架开发电子商务网站的技术。本书涵盖了从基础知识到高级主题的全面内容,适合初学者入门并成长为专业开发人员。 #### 五、主要内容概述...

    asp.net实现RSS模块

    ASP.NET实现RSS模块是Web开发中的一个重要话题,RSS(Really Simple Syndication)是一种内容聚合格式,常用于新闻、博客和 podcast 的更新推送。通过创建一个RSS模块,网站可以方便地向用户或其他服务提供结构化的...

    [其他类别]RSS模块实现源码和工具包下载 v2.0_rss_gj(ASP.NET源码).rar

    【标题】:“RSS模块实现源码和工具包下载 v2.0_rss_gj(ASP.NET源码)” 这个标题表明我们正在讨论一个基于ASP.NET技术的RSS模块,用于实现RSS(Really Simple Syndication)功能的源代码和相关工具包。RSS是一种...

    asp.net做的rss

    在本案例中,标题提到的"asp.net做的rss"指的是使用ASP.NET技术来开发RSS(Really Simple Syndication)服务。 RSS是一种XML格式的数据交换标准,主要用于发布新闻提要、博客更新或其他定期更新的内容。通过RSS订阅...

Global site tag (gtag.js) - Google Analytics