実際画面表示する場合、ビジュアル的に解りやすいので NAVER の RSS を使用しています。
一般的な DOM のメソッドを使用したい場合は、XmlDocument を使用し、http の呼び出しも XmlDocument の LoadFromUriAsync(static) で読み込む事ができますが、要素や属性の取り出しは XDocument がシンプルで簡単ですし、Framework 4.0( Visual Studio 2010 ) でも共通して使えるのでおすすめです。
EnsureSuccessStatusCode メソッドは特別に呼び出す必要はなさそうですが、ドキュメントの表現からするとメモリをきちんと破棄できるようなニュアンスで書かれています( 実際のところを確かめる術はありませんが )。また手順としては、そもそも IsSuccessStatusCode が False の時にスローされるそうなので、直後で処理を中断しています。
XDocument は、余計な null チェック等が必要無いようなので、手軽にバインド用クラスにデータを追加するのに使用すると良いと思います。
private async void loadRss()
{
var httpClient = new HttpClient();
HttpResponseMessage response = null;
try {
response = await httpClient.GetAsync("http://matome.naver.jp/feed/hot");
}
catch (Exception ex) {
Debug.WriteLine(ex.Message);
}
// 接続に失敗
if (response == null) {
return;
}
try {
// HTTP 応答が成功しなかった例外をスローします。
// Content が nullでない場合このメソッドは
// マネージとアンマネージ リソースを解放するために
// Dispose を呼び出します。
response.EnsureSuccessStatusCode();
}
catch (Exception ex) {
Debug.WriteLine(ex.Message);
}
// HTTP 応答の失敗
if (!response.IsSuccessStatusCode) {
Debug.WriteLine("StatusCode : " + response.StatusCode);
return;
}
// 内容を文字列として取得
var string_xml = await response.Content.ReadAsStringAsync();
// XDocument を作成
XDocument dom = XDocument.Parse(string_xml);
// 参照用の名前空間を作成
XNamespace xn_dc = "http://purl.org/dc/elements/1.1/";
XNamespace xn_media = "http://search.yahoo.com/mrss/";
var items = dom.Descendants("item");
foreach (var item in items) {
Debug.WriteLine(item.Element("title").Value);
Debug.WriteLine(item.Element("link").Value);
Debug.WriteLine(item.Element("matome_view").Value);
Debug.WriteLine(item.Element("favorite").Value);
Debug.WriteLine(item.Element("description").Value);
Debug.WriteLine(item.Element("pubDate").Value);
Debug.WriteLine(item.Element("guid").Value);
// 名前空間を持つ要素の参照
Debug.WriteLine(item.Element(xn_dc + "creator").Value);
Debug.WriteLine(item.Element(xn_dc + "date").Value);
// 名前空間を持つ要素の参照から、属性の参照
Debug.WriteLine(item.Element(xn_media + "thumbnail").Attribute("url").Value);
Debug.WriteLine(item.Element(xn_media + "content").Attribute("url").Value);
}
}
Microsoft のドキュメント
HttpClient クラス
HttpResponseMessage クラス
XmlDocument Class