一、弄清結構再動手
要想輕鬆的抽取rss資訊,自然先要了解它的結構,所謂「知己知彼,百戰不殆」嘛。
1、rss的結構
為了能夠方便地對這樣的xml文件進行處理,在本文裡,我們使用c#作為開發的語言。
分析整個rss鏈結後,我們知道rss大致的結構入圖1。
2、抽取的原理
channel節點又包含多個item子節點,而item節點就是程式需要處理的部分,因為它對應著每條實際的新聞項資訊, 每個item節點又通過其子節點提供關於這條新聞的詳細資訊,比如title表示新聞的標題(「微軟im稱王」),link對應新聞實際的鏈結。
rss具體規範可檢視http://blogs.law.harvard.edu/tech/rss
知道了這些後,要程式設計就不困難啦。我們只需提取並顯示出channel和item下的各條資訊就可以了。現在來看看具體的實現方法吧。
二.做個程式讀新聞
對rss有一定了解後,我們開始編寫程式。先還是需要乙個最簡單的介面。新建乙個win form 工程,在form上放置乙個label,乙個文字框txturl用來輸入rss鏈結(就是各**rss鏈結中包含的位址),乙個按鈕bnread用來執行讀取新聞, 乙個treeview樹形控制項treerss顯示讀出的新聞項。
1、定義裝載結構
public class rss
public struct item
}channel結構將儲存channel節點包含的所有子節點資訊,其中items成員欄位是乙個hashtable集合,程式會將item結構作為物件加入集合,用來儲存channel下的所有item節點。這裡我只讀取了有限的幾個節點,讀者可以根據實際需要擴充套件整個結構定義。
2、從rss鏈結中獲取新聞資訊
現在我們就可以開始編寫讀取函式,將抽取出的rss資訊放入上面設計好的結構中。
c#提供了專門的類來訪問xml, 使我們能夠輕鬆地讀出rss的內容。**如下:
xmltextreader reader = new xmltextreader(url);
xmlvalidatingreader valid = new xmlvalidatingreader(reader);
valid.validationtype = validationtype.none;
xmldocument xmldoc= new xmldocument();
xmldoc.load(reader);
使用xmldocument類將txturl中輸入的rss鏈結載入後,首先通過foundchildnode函式,找到channel節點。
private xmlnode foundchildnode(xmlnode node,string name)
} return childlnode; }
xmlnode rssnode = foundchildnode(xmldoc,"rss");
xmlnode channelnode = foundchildnode(rssnode,"channel");
然後我們就可以遍歷它的子節點,根據子節點的name屬性,讀取我們需要的資訊。
rss.channel channel=new rss.channel();
channel.items=new hashtable();
case "item":
} }
如果發現是item子節點,就呼叫getrssitem函式,同樣通過遍歷子節點的方法,將其子節點內容填入item結構中,然後再新增到channel結構的items集合中。因為本程式並不關心新增到集合的鍵值,只需要它是不重複的值,所以我傳入了count屬性。
3.將讀出的資訊顯示在程式中
將rss內容讀出後,就需要把資訊展示給使用者了。我們這裡用的是基本的treeview方法,通過遍歷channel結構的items集合,將其標題新增到treeview中。
private void viewrss(rss.channel channel)
程式執行效果如圖2。
三.小結
用C 製作新聞閱讀器
一。弄清結構再動手要想輕鬆的抽取rss資訊,自然先要了解它的結構,所謂 知己知彼,百戰不殆 嘛。1。rss的結構。抽取的原理 知道了這些後,要程式設計就不困難啦。我們只需提取並顯示出channel和item下的各條資訊就可以了。現在來看看具體的實現方法吧。二 做個程式讀新聞 對rss有一定了解後,我...
五個最佳RSS新聞閱讀器
文章出自 google reader 基於web 自從google月2006年底推出了google reader之後,其令人印象深刻的速度和可用性就吸引了大批使用者,使用google reader最明顯的好處就是,無論使用者在那台電腦上使用,看到的feed都是相同的介面,對於專案的已讀 未讀 標籤都...
護照閱讀器
護照閱讀器 首先從一代 二代護照閱讀器到最新嵌入式護照閱讀器,本身就是乙個識別技術 識別功能 識別準確率都逐步提高的過程。接下來看看桌面式跟嵌入式的應用行業,到底這兩款護照閱讀器有什麼區別?桌面式護照閱讀器 酒店管理系統 機場安全檢查管理系統 訪客管理系統 網咖實名制登記管理系統 汽車尾氣檢測管理系...