RSS訂閱資訊是透過XML技術實現的,其XML格式欄位對應可參閱RSS 2.0 at Harvard Law這網站。
這邊以點部落-最新文章 的資訊提供來做練習,檢視一下該RSS的XML,發現RSS XML的架構大概就是RSS Channel下面會含許多的RSS Channel Item,RSS Channel用來描述該RSS的識別資訊,RSS Channel Item用來描述RSS所要提供給訂閱者的資訊。
有了以上的了解後,要讀取RSS資訊就很簡單了,簡單的說就是透過RSS訂閱位置取得RSS XML,接著進一步對其解析,從RSS XML中取得我們想要的資訊。像是若要取得RSS Channel Item就可以像下面這樣撰寫:
…
var xmlDom=new XmlDocument();
xmlDom.Load(tbxRSSURL.Text);
var rssItems = xmlDom.SelectNodes("/rss/channel/item");
…
這邊附上個完整的範例程式:
using System;
using System.Text;
using System.Windows.Forms;
using System.Xml;
using LevelUpLazy = LevelUp.Lazy;
using System.Diagnostics;
namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnSubmit_Click(object sender, EventArgs e)
{
Stopwatch sw=Stopwatch.StartNew ();
var xmlDom=new XmlDocument();
xmlDom.Load(tbxRSSURL.Text);
var rssItems = xmlDom.SelectNodes("/rss/channel/item");
trvRSSItem.Nodes.Clear();
wbRSSContent.DocumentText = string.Empty;
trvRSSItem.BeginUpdate();
for (var idx = 0; idx (() =>
{
StringBuilder ret = new StringBuilder();
ret.AppendLine(xmlNode.SelectSingleNode(“title”).InnerText);
ret.AppendLine(" “);
ret.AppendLine(xmlNode.SelectSingleNode(“description”).InnerText);
return ret.ToString();
});
}
trvRSSItem.EndUpdate();
this.toolStripStatusLabel1.Text = string.Format(“Elapsed: {0} ms”, sw.ElapsedMilliseconds.ToString());
LevelUpLazy.Lazy.EnableBackgroundInit = true;
}
private void trvRSSItem_AfterSelect(object sender, TreeViewEventArgs e)
{
if (trvRSSItem.SelectedNode == null)
return;
var lazy=trvRSSItem.SelectedNode.Tag as LevelUpLazy .Lazy ;
wbRSSContent.DocumentText = lazy.Value;
}
}
}
運行效果:
Download
SimpleRSSReader.zip
Link
RSS 2.0 at Harvard Law
點部落-最新文章 的資訊提供