教您使用Visual C++制作新聞閱讀器
下面向大家介紹下如何用Visual C++進(jìn)行新聞閱讀器的制作和編寫,這些內(nèi)容都是一些門戶網(wǎng)站和技術(shù)論壇找到的,中間可能有不少錯(cuò)誤是我沒有挑出的,歡迎大家學(xué)習(xí)指正。
1、RSS的結(jié)構(gòu)
我們先打開百度新聞一個(gè)RSS鏈接,如果你再多打開幾個(gè)別的網(wǎng)站的RSS鏈接,會發(fā)現(xiàn)他們都有大致相同的結(jié)構(gòu)。而我們在揭秘RSS(上)中為大家講解的其實(shí)就是編成實(shí)現(xiàn)這樣的一個(gè)XML文件。為了能夠方便地對這樣的XML文檔進(jìn)行處理,在本文里,我們使用C#作為開發(fā)的語言。
分析整個(gè)RSS鏈接后,我們知道RSS大致的結(jié)構(gòu)入圖1。
2、抽取的原理
知道了結(jié)構(gòu),我們還要知道結(jié)構(gòu)中各部分的含義。在圖1中RSS節(jié)點(diǎn)表示當(dāng)前是一個(gè)RSS文件,它由一個(gè)CHANNEL節(jié)點(diǎn)及其子節(jié)點(diǎn)組成,其中一些子節(jié)點(diǎn)提供關(guān)于頻道本身的信息,比如title表示頻道的名稱(“百度互聯(lián)網(wǎng)新聞”)。
CHANNEL節(jié)點(diǎn)又包含多個(gè)ITEM子節(jié)點(diǎn),而ITEM節(jié)點(diǎn)就是程序需要處理的部分,因?yàn)樗鼘?yīng)著每條實(shí)際的新聞項(xiàng)信息, 每個(gè)ITEM節(jié)點(diǎn)又通過其子節(jié)點(diǎn)提供關(guān)于這條新聞的詳細(xì)信息。
比如title表示新聞的標(biāo)題(“微軟IM稱王”),link對應(yīng)新聞實(shí)際的鏈接。知道了這些后,要編程就不困難啦。我們只需提取并顯示出CHANNEL和ITEM下的各條信息就可以了?,F(xiàn)在來看看具體的實(shí)現(xiàn)方法吧。
二、用Visual C++做個(gè)程序讀新聞
對RSS有一定了解后,我們開始編寫程序。先還是需要一個(gè)最簡單的界面。新建一個(gè)Win Form 工程,在Form上放置一個(gè)Label,一個(gè)文本框txtURL用來輸入RSS鏈接(就是各網(wǎng)站RSS鏈接中包含的地址),一個(gè)按鈕bnRead用來執(zhí)行讀取新聞, 一個(gè)TreeView樹形控件treeRSS顯示讀出的新聞項(xiàng)。
1、定義裝載結(jié)構(gòu)
根據(jù)上面分析的RSS結(jié)構(gòu),我們首先來建立一個(gè)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++結(jié)構(gòu)將存儲CHANNEL節(jié)點(diǎn)包含的所有子節(jié)點(diǎn)信息,其中Items成員字段是一個(gè)Hashtable集合,程序會將Item結(jié)構(gòu)作為對象加入集合,用來存儲Channel下的所有Item節(jié)點(diǎn)。這里我只讀取了有限的幾個(gè)節(jié)點(diǎn),讀者可以根據(jù)實(shí)際需要擴(kuò)展整個(gè)結(jié)構(gòu)定義。
【編輯推薦】