当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > C#+ASP.NET开发基于Web的RSS阅读器

ASP.NET
Asp.net利用JQuery弹出层加载数据代码
asp.net dataview做无限极分类的又一用法
asp.net ckeditor编辑器的使用方法
告别ADO.NET实现应用系统无缝切换的烦恼(总结篇)
asp.net 实现动态显示当前时间(不用javascript不考虑开销)
.net动态显示当前时间(客户端javascript)
asp.net 结合YUI 3.0小示例
asp.net 取消缓存相关问题说明
asp.net 计划任务管理程序实现,多线程任务加载
ASP.NET 跨页面传值方法
asp.net中url地址传送中文参数时的两种解决方案
Asp.net 菜单控件简洁版
asp.net jQuery Ajax用户登录功能的实现
asp.net SharpZipLib的压缩与解压问题
asp.net url重写后页面回传问题
asp.net与Discuz!NT整合集成实例教程
Discuz!NT 3与asp.net 整合的实例教程
测试控制台使用方法
.net 动态标题实现方法
asp.net *.ashx类型的文件使用说明

C#+ASP.NET开发基于Web的RSS阅读器


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 60 ::
收藏到网摘: n/a

    最近我一直在寻找如何在web页面上显示RSS Feed的方法,我选择 C#和ASP.NET作为工具。我创建了一个简单的处理函数来处理从一个URL获得的RSS Feed。你可以直接使用这个简单的函数,或者改造成你想要的功能。

  这个函数使用一个字符串rssURL作为它的参数。这个字符串包含了RSS的URL。它使用rssURL的值建立了一个WebRequest项:

System.Net.WebRequest myRequest = System.Net.WebRequest.Create(rssURL);

  这个请求的响应将会被放到一个WebResponse对象里:

System.Net.WebResponse myResponse = myRequest.GetResponse();

  然后这个WebResponse对象被用来建立一个流来取出XML的值:

System.IO.Stream rssStream = myResponse.GetResponseStream();

  然后可以使用一个XmlDocument对象来存储流中的XML内容。XmlDocument对象用来调入XML的内容:

System.Xml.XmlDocument rssDoc = new System.Xml.XmlDocument();
rssDoc.Load(rssStream);

  因为RSS Feed不只是一个XML文件,我们可以假设里面包含了一些RSS标准的规定。这里,我们假设使用了RSS 2.0。你可以从http://blogs.law.harvard.edu/tech/rss里得到规范的详细内容。

  具体的来说,每个项应该在rss/channel/里。使用XPath表达,一个项节点列表可以如下方式创建:

System.Xml.XmlNodeList rssItems = rssDoc.SelectNodes("rss/channel/item");

  rssItems存储了从RSS里获得所有项节点的信息。这样就可取得内部所需要的信息了。这里,标题、链接和每个项的描述将会被显示。在rssItems中存储的每个项,每个标记(tag)元素都可以用SelectSingleNode方法提取出来。返回的值将被赋给一个XMLNode对象。以下代码获取了一个标题节点:

System.Xml.XmlNode rssDetail;
rssDetail = rssItems.Item(i).SelectSingleNode("title");

  现在标记需要被提取出来,使用InnerText完成这项工作。在调用SelectSingleNode之后,可以用rssDetail来测试格式化的RSS XML是否包含某些标记:

if (rssDetail != null) { title = rssDetail.InnerText; } else { title = ""; }

  这样,你就完成了从一个Feed里获取RSS内容的工作。剩下的工作就是调用这个方法来显示Feed的内容了。以下是一个使用ASP.NET完成的完整的例子:

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
public void ProcessRSSItem(string rssURL)
{
 System.Net.WebRequest myRequest = System.Net.WebRequest.Create(rssURL);
 System.Net.WebResponse myResponse = myRequest.GetResponse();

 System.IO.Stream rssStream = myResponse.GetResponseStream();
 System.Xml.XmlDocument rssDoc = new System.Xml.XmlDocument();
 rssDoc.Load(rssStream);

 System.Xml.XmlNodeList rssItems = rssDoc.SelectNodes("rss/channel/item");

 string title = "";
 string link = "";
 string description = "";

 for (int i = 0; i < rssItems.Count; i++)
 {
  System.Xml.XmlNode rssDetail;

  rssDetail = rssItems.Item(i).SelectSingleNode("title");
  if (rssDetail != null)
  {
   title = rssDetail.InnerText;
  }
  else
  {
   title = "";
  }

  rssDetail = rssItems.Item(i).SelectSingleNode("link");
  if (rssDetail != null)
  {
   link = rssDetail.InnerText;
  }
  else
  {
   link = "";
  }

[1] [2] 下一页