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)
{
XMLNode childlNode = null;
for (int i=0;i < Node.ChildNodes.Count;i++)
{
if ( Node.ChildNodes[i].Name == Name && Node.ChildNodes[i].ChildNodes.Count > 0 )
{
childlNode = Node.ChildNodes[i];
return childlNode;
}
}
return childlNode;
}
XmlNode rssNode = FoundChildNode(XMLDoc,"rss");
XMLNode channelNode = FoundChildNode(rssNode,"channel");
然後我們就可以遍歷它的子節點,根據子節點的Name屬性,讀取我們需要的信息。
rss.Channel channel=new rss.Channel();
channel.Items=new Hashtable();
{
switch ( channelNode.ChildNodes[i].Name )
{
case "title":
{
channel.Title = channelNode.ChildNodes[i].InnerText;
break;
}
case "item":
{
rss.Item item=this.getRssItem(channelNode.ChildNodes[i]);
channel.Items.Add(channel.Items.Count,item );
break;
}
}
}
如果發現是item子節點,就調用getRssItem函數,同樣通過遍歷子節點的方法,將其子節點內容填入Item結構中,然後再添加到Channel結構的Items集合中。因為本程序並不關心添加到集合的鍵值,只需要它是不重復的值,所以我傳入了Count屬性。
3.將讀出的信息顯示在程序中
將RSS內容讀出後,就需要把信息展示給用戶了。我們這裡用的是基本的TreeView方法,通過遍歷Channel結構的Items集合,將其標題添加到TreeVIEw中。
private void VIEwRss(rss.Channel channel)
{
treeRss.BeginUpdate();
treeRss.Nodes.Clear();
TreeNode channelNode=treeRss.Nodes.Add(channel.Title );
channelNode.Tag="";
for (int i=0;i <channel.Items.Count ;i++)
{
rss.Item item=(rss.Item)channel.Items[i];
TreeNode itemNode=channelNode.Nodes.Add(item.Title );
itemNode.Tag=item.Link;
}
treeRss.ExpandAll();
treeRss.EndUpdate();
}
同時我們還可以設置TreeVIEw的每個子節點的Tag屬性為它對應的鏈接。以便當選中子節點時就可以通過讀取Tag屬性訪問具體的信息。
private void treeRss_AfterSelect(object sender, System.Windows.Forms.TreeVIEwEventArgs e)
{
TreeNode itemNode=e.Node ;
string URL=itemNode.Tag.ToString();
if (URL.Length!=0)
System.Diagnostics.Process.Start( URL);
}
程序運行效果如圖2。
三.小結
怎麼樣,一個簡單的RSS新聞閱讀器就按前面所說輕松完成了,容易吧。雖然它還有很多不足,但如果大家通過這個例子學會了抽取RSS鏈接信息的基本方法,那就足夠了!