最近我一直在寻找如何在web页面上显示RSS Feed的方法
我选择 C#和ASP
NET作为工具
我创建了一个简单的处理函数来处理从一个URL获得的RSS Feed
你可以直接使用这个简单的函数
或者改造成你想要的功能
这个函数使用一个字符串rssURL作为它的参数这个字符串包含了RSS的URL它使用rssURL的值建立了一个WebRequest项
SystemNetWebRequest myRequest = SystemNetWebRequestCreate(rssURL);
这个请求的响应将会被放到一个WebResponse对象里
SystemNetWebResponse myResponse = myRequestGetResponse();
然后这个WebResponse对象被用来建立一个流来取出XML的值
SystemIOStream rssStream = myResponseGetResponseStream();
然后可以使用一个XmlDocument对象来存储流中的XML内容XmlDocument对象用来调入XML的内容
SystemXmlXmlDocument rssDoc = new SystemXmlXmlDocument();
rssDocLoad(rssStream);
因为RSS Feed不只是一个XML文件我们可以假设里面包含了一些RSS标准的规定这里我们假设使用了RSS 你可以从里得到规范的详细内容
具体的来说每个项应该在rss/channel/里使用XPath表达一个项节点列表可以如下方式创建
SystemXmlXmlNodeList rssItems = rssDocSelectNodes(rss/channel/item);
rssItems存储了从RSS里获得所有项节点的信息这样就可取得内部所需要的信息了这里标题链接和每个项的描述将会被显示在rssItems中存储的每个项每个标记(tag)元素都可以用SelectSingleNode方法提取出来返回的值将被赋给一个XMLNode对象以下代码获取了一个标题节点
SystemXmlXmlNode rssDetail;
rssDetail = rssItemsItem(i)SelectSingleNode(title);
现在标记需要被提取出来使用InnerText完成这项工作在调用SelectSingleNode之后可以用rssDetail来测试格式化的RSS XML是否包含某些标记
if (rssDetail != null) { title = rssDetailInnerText; } else { title = ; }
这样你就完成了从一个Feed里获取RSS内容的工作剩下的工作就是调用这个方法来显示Feed的内容了以下是一个使用ASPNET完成的完整的例子
<%@ Page Language=C# %>
<!DOCTYPE html PUBLIC //WC//DTD XHTML Transitional//EN
transitionaldtd>
<script runat=server>
public void ProcessRSSItem(string rssURL)
{
SystemNetWebRequest myRequest = SystemNetWebRequestCreate(rssURL);
SystemNetWebResponse myResponse = myRequestGetResponse();
SystemIOStream rssStream = myResponseGetResponseStream();
SystemXmlXmlDocument rssDoc = new SystemXmlXmlDocument();
rssDocLoad(rssStream);
SystemXmlXmlNodeList rssItems = rssDocSelectNodes(rss/channel/item);
string title = ;
string link = ;
string description = ;
for (int i = ; i < rssItemsCount; i++)
{
SystemXmlXmlNode rssDetail;
rssDetail = rssItemsItem(i)SelectSingleNode(title);
if (rssDetail != null)
{
title = rssDetailInnerText;
}
else
{
title = ;
}
rssDetail = rssItemsItem(i)SelectSingleNode(link);
if (rssDetail != null)
{
link = rssDetailInnerText;
}
else
{
link = ;
}
rssDetail = rssItemsItem(i)SelectSingleNode(link);
if (rssDetail != null)
{
link = rssDetailInnerText;
}
else
{
link = ;
}
rssDetail = rssItemsItem(i)SelectSingleNode(description);
if (rssDetail != null)
{
description = rssDetailInnerText;
}
else
{
description = ;
}
ResponseWrite(<p><b><a + link + target=new> + title + </a></b><br/>);
ResponseWrite(description + </p>);
}
}
</script>
<html xmlns=>
<head runat=server>
<title>Untitled Page</title>
</head>
<body>
<form id=form runat=server>
<div>
<%
string rssURL = _includes/feeds/codeguru/rssallxml;
ResponseWrite(<font size=><b>Site: + rssURL + </b></font><Br />);
ProcessRSSItem(rssURL);
ResponseWrite(<hr />);
rssURL = _includes/feeds/special/devxml;
ResponseWrite(<font size=><b>Site: + rssURL + </b></font><Br />);
ProcessRSSItem(rssURL);
%>
</div>
</form>
</body>
</html>
显示结果如下