成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

看如何用Visual C#制作新聞閱讀器

開發 后端
本文從RSS的結構開始,詳細地介紹了如何用Visual C#制作新聞閱讀器,希望大家看了之后會有所幫助。

用Visual C#制作新聞閱讀器:弄清結構再動手

要想輕松的抽取RSS信息,自然先要了解它的結構,所謂“知己知彼,百戰不殆”嘛。

1、RSS的結構

我們先打開百度新聞一個RSS鏈接,如果你再多打開幾個別的網站的RSS鏈接,會發現他們都有大致相同的結構。而我們在揭秘RSS(上)中為大家講解的其實就是編成實現這樣的一個XML文件。

為了能夠方便地對這樣的XML文檔進行處理,在本文里,我們使用C#作為開發的語言。

分析整個RSS鏈接后,我們知道RSS大致的結構入圖1。

RSS大致的結構入圖1 

2、抽取的原理

知道了結構,我們還要知道結構中各部分的含義。在圖1中RSS節點表示當前是一個RSS文件,它由一個CHANNEL節點及其子節點組成,其中一些子節點提供關于頻道本身的信息,比如title表示頻道的名稱(“百度互聯網新聞”)。

CHANNEL節點又包含多個ITEM子節點,而ITEM節點就是程序需要處理的部分,因為它對應著每條實際的新聞項信息, 每個ITEM節點又通過其子節點提供關于這條新聞的詳細信息,比如title表示新聞的標題(“微軟IM稱王”),link對應新聞實際的鏈接。

RSS具體規范可查看http://blogs.law.harvard.edu/tech/rss

知道了這些后,要編程就不困難啦。我們只需提取并顯示出CHANNEL和ITEM下的各條信息就可以了。現在來看看具體的實現方法吧。

用Visual C#制作新聞閱讀器:做個程序讀新聞

對RSS有一定了解后,我們開始編寫程序。先還是需要一個最簡單的界面。新建一個Win Form 工程,在Form上放置一個Label,一個文本框txtURL用來輸入RSS鏈接(就是各網站RSS鏈接中包含的地址),一個按鈕bnRead用來執行讀取新聞, 一個TreeView樹形控件treeRSS顯示讀出的新聞項。

1、定義裝載結構

根據上面分析的RSS結構,我們首先來建立一個rss類,用它來裝載RSS鏈接中CHANNEL和ITEM的各條信息。代碼如下:

  1. public class rss  
  2. {  
  3.  public struct Channel  
  4.  {  
  5.   public string Title;  
  6.   public Hashtable Items;  
  7.  }  
  8.  
  9.  public struct Item  
  10.  {  
  11.   public string Title;  
  12.   public string Description;  
  13.   public string Link;  
  14.  }  
  15. }  

Channel結構將存儲CHANNEL節點包含的所有子節點信息,其中Items成員字段是一個Hashtable集合,程序會將Item結構作為對象加入集合,用來存儲Channel下的所有Item節點。這里我只讀取了有限的幾個節點,讀者可以根據實際需要擴展整個結構定義。

2、從RSS鏈接中獲取新聞信息

現在我們就可以開始編寫讀取函數,將抽取出的RSS信息放入上面設計好的結構中。

C#提供了專門的類來訪問XML, 使我們能夠輕松地讀出RSS的內容。代碼如下:

  1. XmlTextReader Reader = new XmlTextReader(URL);  
  2. XmlValidatingReader Valid = new XmlValidatingReader(Reader);  
  3. Valid.ValidationType = ValidationType.None;  
  4. XmlDocument xmlDoc= new XmlDocument();  
  5. xmlDoc.Load(Reader);  

使用XmlDocument類將txtURL中輸入的RSS鏈接加載后,首先通過FoundChildNode函數,找到Channel節點。

  1. private XmlNode FoundChildNode(XmlNode Node,string Name)  
  2. {  
  3.  XmlNode childlNode = null;  
  4.  for (int i=0;i <  Node.ChildNodes.Count;i++)  
  5.  {  
  6.   if ( Node.ChildNodes[i].Name == Name && Node.ChildNodes[i].ChildNodes.Count > 0 )  
  7.   {  
  8.    childlNode = Node.ChildNodes[i];  
  9.    return childlNode;  
  10.   }  
  11.  }  
  12.  return childlNode;  
  13. }  
  14. XmlNode rssNode = FoundChildNode(xmlDoc,"rss");  
  15. XmlNode channelNode = FoundChildNode(rssNode,"channel"); 

然后我們就可以遍歷它的子節點,根據子節點的Name屬性,讀取我們需要的信息。

  1. rss.Channel channel=new rss.Channel();  
  2. channel.Items=new Hashtable();  
  3. {  
  4.  switch ( channelNode.ChildNodes[i].Name )  
  5.  {  
  6.   case "title":  
  7.    {  
  8.     channel.Title = channelNode.ChildNodes[i].InnerText;  
  9.     break;  
  10.    }  
  11.   case "item":  
  12.    {  
  13.     rss.Item item=this.getRssItem(channelNode.ChildNodes[i]);  
  14.     channel.Items.Add(channel.Items.Count,item );  
  15.     break;  
  16.    }  
  17.  }  
  18. }  

如果發現是item子節點,就調用getRssItem函數,同樣通過遍歷子節點的方法,將其子節點內容填入Item結構中,然后再添加到Channel結構的Items集合中。因為本程序并不關心添加到集合的鍵值,只需要它是不重復的值,所以我傳入了Count屬性。

3.將讀出的信息顯示在程序中

將RSS內容讀出后,就需要把信息展示給用戶了。我們這里用的是基本的TreeView方法,通過遍歷Channel結構的Items集合,將其標題添加到TreeView中。

  1. private void ViewRss(rss.Channel channel)  
  2. {  
  3.  treeRss.BeginUpdate();  
  4.  treeRss.Nodes.Clear();  
  5.  TreeNode channelNode=treeRss.Nodes.Add(channel.Title );   
  6.  channelNode.Tag="";  
  7.  for (int i=0;i < channel.Items.Count ;i++)  
  8.  {  
  9.   rss.Item item=(rss.Item)channel.Items[i];  
  10.   TreeNode itemNode=channelNode.Nodes.Add(item.Title );  
  11.   itemNode.Tag=item.Link;  
  12.  }  
  13.  treeRss.ExpandAll();  
  14.  treeRss.EndUpdate();  
  15. }  

同時我們還可以設置TreeView的每個子節點的Tag屬性為它對應的鏈接。以便當選中子節點時就可以通過讀取Tag屬性訪問具體的信息。

  1. private void treeRss_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e)  
  2. {  
  3.  TreeNode itemNode=e.Node ;  
  4.  string URL=itemNode.Tag.ToString();  
  5.  if (URL.Length!=0)  
  6.   System.Diagnostics.Process.Start( URL);  
  7. }   
  8.  

程序運行效果如圖2。

 程序運行效果如圖2

用Visual C#制作新聞閱讀器:小結

怎么樣,一個簡單的RSS新聞閱讀器就按前面所說輕松完成了,容易吧。雖然它還有很多不足,但如果大家通過這個例子學會了抽取RSS鏈接信息的基本方法,那就足夠了!

【編輯推薦】

  1. 四種C#參數類型簡介
  2. Java與C#的不同之處
  3. 學習C#程序集
  4. C#和ADO.NET建立數據綁定網格
  5. 介紹C# 4.0新特性dynamic
責任編輯:book05 來源: hi.baidu
相關推薦

2010-01-22 14:20:17

Visual C++

2009-08-24 15:58:00

Visual C#生成

2013-09-02 16:52:31

Windows 8.1

2010-09-13 15:55:43

制作端口掃描器

2014-12-03 10:46:15

iReader

2017-04-11 13:31:40

閱讀器開源RSS

2009-05-05 09:00:48

RSS瀏覽器

2009-08-10 16:47:45

Visual C#數據

2009-08-19 16:50:32

Visual C#C#語言特性

2009-09-03 17:54:04

C#開發瀏覽器

2011-09-09 10:19:13

2024-05-16 13:44:18

2013-09-02 16:59:34

JavaScriptHTML

2011-09-15 18:43:00

UbuntuchmPDF

2013-09-03 11:06:05

Windows

2009-08-18 16:31:19

Visual C#編寫

2009-08-20 11:03:34

Visual C#使用

2009-08-17 15:34:58

C#創建XML

2009-08-20 16:07:39

C#和ADO.NET訪

2014-12-17 15:23:03

Android網絡閱讀器源碼
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 羞羞视频网站 | 日韩欧美高清 | 在线欧美小视频 | 国产精品久久久乱弄 | 91av导航| av在线免费看网址 | 色.com| av色站 | 国产精品1区2区3区 一区中文字幕 | 黄色91在线 | 午夜欧美一区二区三区在线播放 | 天堂资源| 国产精品免费一区二区三区四区 | 久久精品国产一区二区电影 | 99国产精品99久久久久久 | 国产精品久久久久久 | 一级毛片成人免费看a | 一区二区久久 | 精品成人一区二区 | 亚洲精品乱码久久久久v最新版 | 亚洲精品一区二区 | 综合伊人 | 欧美一级精品片在线看 | 久久精品黄色 | 国产成人精品久久二区二区 | 综合九九 | 91黄色片免费看 | 91精品国产色综合久久 | 美女天堂| 色免费在线视频 | 成人小视频在线观看 | 国内激情av片 | 国产精品久久久久久久久久久新郎 | 久久久久久久久久久国产 | 91精品综合久久久久久五月天 | 波波电影院一区二区三区 | 九色国产 | 亚洲精品在线免费 | 97精品久久| 日韩免费网站 | 国产精品无码久久久久 |