当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > 如何利用.NET Framework使用RSS feed

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类型的文件使用说明

ASP.NET 中的 如何利用.NET Framework使用RSS feed


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

如果想利用.NET Framework来使用RSS feed的话,这其实并不复杂。你只需要做下面几步就可以了:

◆链接到提供RSS feed的网站

◆下载feed XML

◆将feed的XML装载到允许搜索的对象中

◆为你想提取的结点搜索feed的XML

.NET Framework提供了内置函数来完成所有的任务。我们所需要做的就是,将这些功能绑定在一起,这样我们就可以使用RSS feeds。

链接到服务器

我们可以使用WebRequest对象链接到服务器上。WebRequest对象使你可以在Web站点上贴出请求,自从RSS通过HTTP传输后,WebRequest对象就成了链接服务器最主要的选择了。

Listing A中的代码告诉我们,任何将一个新的WebRequest对象与一个URL进行连接。

Listing A

在这个例子中,也可以用完整URL的来取代RSS feed中的“url”。下面是MSN Automotive RSS feed的地址:http://rss-feeds.msn.com/autos/autosnews.xml

下载RSS数据

当我们连接到服务器之后,我们需要下载feed提供的数据。WebRequest对象为实现这个目的提供了一个GetResponse()方法。WebRequest.GetResponse()方法返回一个WebRequest对象,这个对象根据我们的请求给我们访问服务器的响应。

在这里我们将用到WebResponse(Web响应)对象的GetResponseStream()方法。这个方法返回一个Stream对象,这个对象中包含了服务器所响应的原始RSS XML。Listing B中的代码告诉我们如何从WebRequest(Web请求)对象得到WebResponse(Web响应)对象,和如何从WebResponse(Web响应)对象得响应流。

Listing B

以下为引用的内容:
//Get the response from the
WebRequestWebResponse myResponse = myRequest.GetResponse();
//Get the response's
streamStream rssStream = myResponse.GetResponseStream();

将RSS数据装载到XML文档中

一旦我们从WebResponse(Web响应)对象得到了流,我们就将这个流下载到XmlDocument对象中了。这样我们就很容易对XML数据进行分析了,并能轻松地从中取值。得到XmlDocument装载Stream最简单的方法是,创建一个新的XmlDocument对象,并将我们的Stream传递给Load方法。Listing C为我们说明了这个方法的使用。

Listing C

以下为引用的内容:
//Create the
Xml DocumentXmlDocument document = newXmlDocument();
//Load the stream into the XmlDocument object.
document.Load(rssStream);

分析XML

这是使用RSS feed最难的部分。我们必须使用刚才创建的XmlDocument来得到含有我们自己数据的XML结点。我们普遍感兴趣的结点是:

◆Feed的标题,它存放在feed XML中的/rss/channel/title文件里面

◆Feed的文章,它存放在feed XML中的/rss/channel/item文件里面。在这个位置可能有多个结点。

◆文章的标题,它存放在文章结点中的title里面。

◆文章的描述,它存放在文章结点的description里面。

◆文章的链接,它存放在文章结点的link里面。

我们可以使用XmlDocument对象内置的SelectSingleNode函数和SelectNodes函数来得到这些结点。这两个函数都可以接受XPath查询,也都可以返回与查询结果相匹配的一个或多个结点。

Listing D这段代码告诉我们如何使用XmlDocument和Xpath从RSS feed中分析出每个单独的元素。

Listing D

以下为引用的内容:
//Get an XmlDocument object that contains the feed's XML
XmlDocument feedDocument = GetXmlDocumentFromFeed("http://rss-feeds.msn.com/autos/autosnews.xml");
//Create a XmlNamespaceManager for our namespace.
XmlNamespaceManager manager =
newXmlNamespaceManager(feedDocument.NameTable);
//Add the RSS namespace to the manager.
manager.AddNamespace("rss", "http://purl.org/rss/1.0/");
//Get the title node out of the RSS document
XmlNode titleNode =
feedDocument.SelectSingleNode("/rss/channel/title", manager);
//Get the article nodes
XmlNodeList articleNodes =
feedDocument.SelectNodes("/rss/channel/item", manager);
//Loop through the articles and extract
// their data.
foreach (XmlNode articleNode in articleNodes)
{
//Get the article's title.
string title =
articleNode.SelectSingleNode("title", manager).InnerText;
//Get the article's link
string link =
articleNode.SelectSingleNode("link", manager).InnerText;
//Get the article's description
string description =
articleNode.SelectSingleNode("description", manager).InnerText;
}

不是所有的RSS feed的创建都是相同的

如果所有的RSS feed都使用相同的格式,它将变得更强大,然而RSS feed有许多不同的版本和实现。在这篇文章中描述的格式适合大部分的feed,可能有少部分的RSS feed格式与这个格式不同。