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

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

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

      如果想利用.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

      以下為引用的內容:
      //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數據

      當我們連接到服務器之后,我們需要下載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格式與這個格式不同。

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

      來源:模板無憂//所屬分類:.Net教程/更新時間:2008-08-22
      相關.Net教程