如何利用.NET Framework使用RSS feed_.Net教程
推薦:在客戶端驗(yàn)證密碼強(qiáng)度[2],兼容FireFox和IE之前發(fā)過(guò)一個(gè)關(guān)于用JavaScript驗(yàn)證密碼強(qiáng)度的,程序很簡(jiǎn)潔,只用了一個(gè)正則便能驗(yàn)證所有情況,但是因?yàn)槔昧巳∏傻姆椒�,所以只能在IE中使用,在FF中失效,現(xiàn)在修改一下做一個(gè)兼容的版本。
如果想利用.NET Framework來(lái)使用RSS feed的話,這其實(shí)并不復(fù)雜。你只需要做下面幾步就可以了:
◆鏈接到提供RSS feed的網(wǎng)站
◆下載feed XML
◆將feed的XML裝載到允許搜索的對(duì)象中
◆為你想提取的結(jié)點(diǎn)搜索feed的XML
.NET Framework提供了內(nèi)置函數(shù)來(lái)完成所有的任務(wù)。我們所需要做的就是,將這些功能綁定在一起,這樣我們就可以使用RSS feeds。
鏈接到服務(wù)器
我們可以使用WebRequest對(duì)象鏈接到服務(wù)器上。WebRequest對(duì)象使你可以在Web站點(diǎn)上貼出請(qǐng)求,自從RSS通過(guò)HTTP傳輸后,WebRequest對(duì)象就成了鏈接服務(wù)器最主要的選擇了。
Listing A中的代碼告訴我們,任何將一個(gè)新的WebRequest對(duì)象與一個(gè)URL進(jìn)行連接。
Listing A
| 以下為引用的內(nèi)容: //Create a WebRequest object WebRequest myRequest = WebRequest.Create(url); |
在這個(gè)例子中,也可以用完整URL的來(lái)取代RSS feed中的“url”。下面是MSN Automotive RSS feed的地址:http://rss-feeds.msn.com/autos/autosnews.xml
下載RSS數(shù)據(jù)
當(dāng)我們連接到服務(wù)器之后,我們需要下載feed提供的數(shù)據(jù)。WebRequest對(duì)象為實(shí)現(xiàn)這個(gè)目的提供了一個(gè)GetResponse()方法。WebRequest.GetResponse()方法返回一個(gè)WebRequest對(duì)象,這個(gè)對(duì)象根據(jù)我們的請(qǐng)求給我們?cè)L問(wèn)服務(wù)器的響應(yīng)。
在這里我們將用到WebResponse(Web響應(yīng))對(duì)象的GetResponseStream()方法。這個(gè)方法返回一個(gè)Stream對(duì)象,這個(gè)對(duì)象中包含了服務(wù)器所響應(yīng)的原始RSS XML。Listing B中的代碼告訴我們?nèi)绾螐腤ebRequest(Web請(qǐng)求)對(duì)象得到WebResponse(Web響應(yīng))對(duì)象,和如何從WebResponse(Web響應(yīng))對(duì)象得響應(yīng)流。
Listing B
| 以下為引用的內(nèi)容: //Get the response from the WebRequestWebResponse myResponse = myRequest.GetResponse(); //Get the response's streamStream rssStream = myResponse.GetResponseStream(); |
將RSS數(shù)據(jù)裝載到XML文檔中
一旦我們從WebResponse(Web響應(yīng))對(duì)象得到了流,我們就將這個(gè)流下載到XmlDocument對(duì)象中了。這樣我們就很容易對(duì)XML數(shù)據(jù)進(jìn)行分析了,并能輕松地從中取值。得到XmlDocument裝載Stream最簡(jiǎn)單的方法是,創(chuàng)建一個(gè)新的XmlDocument對(duì)象,并將我們的Stream傳遞給Load方法。Listing C為我們說(shuō)明了這個(gè)方法的使用。
Listing C
| 以下為引用的內(nèi)容: //Create the Xml DocumentXmlDocument document = newXmlDocument(); //Load the stream into the XmlDocument object. document.Load(rssStream); |
分析XML
這是使用RSS feed最難的部分。我們必須使用剛才創(chuàng)建的XmlDocument來(lái)得到含有我們自己數(shù)據(jù)的XML結(jié)點(diǎn)。我們普遍感興趣的結(jié)點(diǎn)是:
◆Feed的標(biāo)題,它存放在feed XML中的/rss/channel/title文件里面
◆Feed的文章,它存放在feed XML中的/rss/channel/item文件里面。在這個(gè)位置可能有多個(gè)結(jié)點(diǎn)。
◆文章的標(biāo)題,它存放在文章結(jié)點(diǎn)中的title里面。
◆文章的描述,它存放在文章結(jié)點(diǎn)的description里面。
◆文章的鏈接,它存放在文章結(jié)點(diǎn)的link里面。
我們可以使用XmlDocument對(duì)象內(nèi)置的SelectSingleNode函數(shù)和SelectNodes函數(shù)來(lái)得到這些結(jié)點(diǎn)。這兩個(gè)函數(shù)都可以接受XPath查詢,也都可以返回與查詢結(jié)果相匹配的一個(gè)或多個(gè)結(jié)點(diǎn)。
Listing D這段代碼告訴我們?nèi)绾问褂肵mlDocument和Xpath從RSS feed中分析出每個(gè)單獨(dú)的元素。
Listing D
| 以下為引用的內(nèi)容: //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的創(chuàng)建都是相同的
如果所有的RSS feed都使用相同的格式,它將變得更強(qiáng)大,然而RSS feed有許多不同的版本和實(shí)現(xiàn)。在這篇文章中描述的格式適合大部分的feed,可能有少部分的RSS feed格式與這個(gè)格式不同。
分享:.NET中如何生成靜態(tài)頁(yè)如何生成靜態(tài)頁(yè): 方案1: /// <summary> /// 傳入U(xiǎn)RL返回網(wǎng)頁(yè)的html代碼 /// </summary> /// <param name="Url">URL</para
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP發(fā)送Email實(shí)例(可帶附件)
- js實(shí)現(xiàn)廣告漂浮效果的小例子
- asp.net Repeater 數(shù)據(jù)綁定的具體實(shí)現(xiàn)
- Asp.Net 無(wú)刷新文件上傳并顯示進(jìn)度條的實(shí)現(xiàn)方法及思路
- Asp.net獲取客戶端IP常見(jiàn)代碼存在的偽造IP問(wèn)題探討
- VS2010 水晶報(bào)表的使用方法
- ASP.NET中操作SQL數(shù)據(jù)庫(kù)(連接字符串的配置及獲取)
- asp.net頁(yè)面?zhèn)髦禍y(cè)試實(shí)例代碼
- DataGridView - DataGridViewCheckBoxCell的使用介紹
- asp.net中javascript的引用(直接引入和間接引入)
- 三層+存儲(chǔ)過(guò)程實(shí)現(xiàn)分頁(yè)示例代碼
.Net教程Rss訂閱編程教程搜索
.Net教程推薦
- 從XML文件中讀取數(shù)據(jù)綁定到DropDownList
- ASP.NET筆記之 控件與母板的區(qū)別分析
- 解析WPF綁定層次結(jié)構(gòu)數(shù)據(jù)的應(yīng)用詳解
- 在ASP.NET中使用AJAX的簡(jiǎn)單方法
- 彈出窗口,點(diǎn)擊確定在刪除數(shù)據(jù)的實(shí)現(xiàn)方法
- .NET教程之ASP.NET緩存方法分析和實(shí)踐示例
- Asp.net三層結(jié)構(gòu)中的變量引用與傳遞
- AJAX實(shí)現(xiàn)web頁(yè)面中級(jí)聯(lián)菜單的設(shè)計(jì)
- 組合.NET數(shù)據(jù)控件構(gòu)建強(qiáng)大用戶接口
- ASP.NET實(shí)現(xiàn)頁(yè)面間值傳遞的幾種方法
- 相關(guān)鏈接:
- 教程說(shuō)明:
.Net教程-如何利用.NET Framework使用RSS feed
。