国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

如何利用.NET Framework使用RSS feed_.Net教程

2024-07-10 12:49:57
字體:
供稿:網(wǎng)友

推薦:在客戶端驗證密碼強度[2],兼容FireFox和IE
之前發(fā)過一個關(guān)于用JavaScript驗證密碼強度的,程序很簡潔,只用了一個正則便能驗證所有情況,但是因為利用了取巧的方法,所以只能在IE中使用,在FF中失效,現(xiàn)在修改一下做一個兼容的版本。

如果想利用.NET Framework來使用RSS feed的話,這其實并不復(fù)雜。你只需要做下面幾步就可以了:

◆鏈接到提供RSS feed的網(wǎng)站

◆下載feed XML

◆將feed的XML裝載到允許搜索的對象中

◆為你想提取的結(jié)點搜索feed的XML

.NET Framework提供了內(nèi)置函數(shù)來完成所有的任務(wù)。我們所需要做的就是,將這些功能綁定在一起,這樣我們就可以使用RSS feeds。

鏈接到服務(wù)器

我們可以使用WebRequest對象鏈接到服務(wù)器上。WebRequest對象使你可以在Web站點上貼出請求,自從RSS通過HTTP傳輸后,WebRequest對象就成了鏈接服務(wù)器最主要的選擇了。

Listing A中的代碼告訴我們,任何將一個新的WebRequest對象與一個URL進行連接。

Listing A

以下為引用的內(nèi)容:
//Create a WebRequest object
WebRequest myRequest = WebRequest.Create(url);

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

下載RSS數(shù)據(jù)

當我們連接到服務(wù)器之后,我們需要下載feed提供的數(shù)據(jù)。WebRequest對象為實現(xiàn)這個目的提供了一個GetResponse()方法。WebRequest.GetResponse()方法返回一個WebRequest對象,這個對象根據(jù)我們的請求給我們訪問服務(wù)器的響應(yīng)。

在這里我們將用到WebResponse(Web響應(yīng))對象的GetResponseStream()方法。這個方法返回一個Stream對象,這個對象中包含了服務(wù)器所響應(yīng)的原始RSS XML。Listing B中的代碼告訴我們?nèi)绾螐腤ebRequest(Web請求)對象得到WebResponse(Web響應(yīng))對象,和如何從WebResponse(Web響應(yīng))對象得響應(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))對象得到了流,我們就將這個流下載到XmlDocument對象中了。這樣我們就很容易對XML數(shù)據(jù)進行分析了,并能輕松地從中取值。得到XmlDocument裝載Stream最簡單的方法是,創(chuàng)建一個新的XmlDocument對象,并將我們的Stream傳遞給Load方法。Listing C為我們說明了這個方法的使用。

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來得到含有我們自己數(shù)據(jù)的XML結(jié)點。我們普遍感興趣的結(jié)點是:

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

◆Feed的文章,它存放在feed XML中的/rss/channel/item文件里面。在這個位置可能有多個結(jié)點。

◆文章的標題,它存放在文章結(jié)點中的title里面。

◆文章的描述,它存放在文章結(jié)點的description里面。

◆文章的鏈接,它存放在文章結(jié)點的link里面。

我們可以使用XmlDocument對象內(nèi)置的SelectSingleNode函數(shù)和SelectNodes函數(shù)來得到這些結(jié)點。這兩個函數(shù)都可以接受XPath查詢,也都可以返回與查詢結(jié)果相匹配的一個或多個結(jié)點。

Listing D這段代碼告訴我們?nèi)绾问褂肵mlDocument和Xpath從RSS feed中分析出每個單獨的元素。

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都使用相同的格式,它將變得更強大,然而RSS feed有許多不同的版本和實現(xiàn)。在這篇文章中描述的格式適合大部分的feed,可能有少部分的RSS feed格式與這個格式不同。

分享:.NET中如何生成靜態(tài)頁
如何生成靜態(tài)頁: 方案1: /// <summary> /// 傳入URL返回網(wǎng)頁的html代碼 /// </summary> /// <param name="Url">URL</para

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 宽城| 邻水| 桂林市| 年辖:市辖区| 揭东县| 循化| 巩留县| 安乡县| 东海县| 广南县| 荃湾区| 昌宁县| 成都市| 南溪县| 驻马店市| 汤原县| 晋宁县| 合水县| 炉霍县| 湖北省| 呈贡县| 深水埗区| 南通市| 婺源县| 兴义市| 济阳县| 龙川县| 什邡市| 万山特区| 阜新| 遂川县| 南昌县| 手机| 岑巩县| 孟津县| 鹿泉市| 晋江市| 丰顺县| 墨竹工卡县| 平乐县| 沅江市|