下面向大家介紹下如何用Visual C++進行新聞閱讀器的制作和編寫,這些內容都是一些門戶網站和技術論壇找到的,中間可能有不少錯誤是我沒有挑出的,歡迎大家學習指正。
1、RSS的結構
我們先打開百度新聞一個RSS鏈接,如果你再多打開幾個別的網站的RSS鏈接,會發現他們都有大致相同的結構。而我們在揭秘RSS上)中為大家講解的其實就是編成實現這樣的一個XML文件。為了能夠方便地對這樣的XML文檔進行處理,在本文裡,我們使用C#作為開發的語言。
分析整個RSS鏈接後,我們知道RSS大致的結構入圖1。
2、抽取的原理
知道了結構,我們還要知道結構中各部分的含義。在圖1中RSS節點表示當前是一個RSS文件,它由一個CHANNEL節點及其子節點組成,其中一些子節點提供關於頻道本身的信息,比如title表示頻道的名稱“百度互聯網新聞”)。
CHANNEL節點又包含多個ITEM子節點,而ITEM節點就是程序需要處理的部分,因為它對應著每條實際的新聞項信息, 每個ITEM節點又通過其子節點提供關於這條新聞的詳細信息。
比如title表示新聞的標題“微軟IM稱王”),link對應新聞實際的鏈接。知道了這些後,要編程就不困難啦。我們只需提取並顯示出CHANNEL和ITEM下的各條信息就可以了。現在來看看具體的實現方法吧。
二、用Visual C++做個程序讀新聞
對RSS有一定了解後,我們開始編寫程序。先還是需要一個最簡單的界面。新建一個Win Form 工程,在Form上放置一個Label,一個文本框txtURL用來輸入RSS鏈接就是各網站RSS鏈接中包含的地址),一個按鈕bnRead用來執行讀取新聞, 一個TreeView樹形控件treeRSS顯示讀出的新聞項。
1、定義裝載結構
根據上面分析的RSS結構,我們首先來建立一個rss類,用它來裝載RSS鏈接中CHANNEL和ITEM的各條信息。代碼如下:
- public class rss
- {
- public struct Channel
- {
- public string Title;
- public Hashtable Items;
- }
- public struct Item
- {
- public string Title;
- public string Description;
- public string Link;
- }
- }
Visual C++結構將存儲CHANNEL節點包含的所有子節點信息,其中Items成員字段是一個Hashtable集合,程序會將Item結構作為對象加入集合,用來存儲Channel下的所有Item節點。這裡我只讀取了有限的幾個節點,讀者可以根據實際需要擴展整個結構定義。