実際画面表示する場合、ビジュアル的に解りやすいので 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
|
【Win8 ストアアプリの最新記事】
- C# : HttpClient で Post と Get する汎用 static クラス
- Win8.1 ストアアプリ(JS) : Visual Studio 2013 で Three.js(v65) の WebGLRenderer の動作を確認しました
- WinJS ストア : Three.js を組み込んで、『画像を飛ばす』テンプレート( Bird.js を利用 )
- WinJS ストア : 『背景画像をチェンジする2画面アプリ』のテンプレート
- VS2012ストア(C#) : WebView テンプレート
- VS2012(C#)ストア : ListView Twitter 検索テンプレート
- イラストを背景にして2ページの画面遷移を解りやすくした Windows Store テンプレート
- Twitter API の自分のアプリのトークンを使って投稿するだけの class VS2012_Twitter
- Win8 ストア(C#) / PDF viewer sample (Windows 8.1)
- ストアアプリの TextBox のスクロールバー
- Win8 ストアアプリの、メモリ上にページを残す画面遷移と、前画面のコントロールの参照
- Win8 ストアアプリで、『選択肢を応答するダイアログ』を簡単に使うための MessageBox クラス
- Win8 ストアから Post 投稿
- Win8ストア XAML の AppBarButtonStyle のContent に指定する 16進数 Unicode の取得
- Win8 ストア : UrlEncode と UrlDecode
- Win8 ストア : リストボックス テンプレート
- Win8 ストア : ファイルアクセス テンプレート
- Win8 ストア : ストアブランク テンプレート
- AppBar テンプレート / Win8 ストアアプリ(C#)
- Windows ストアアプリの AppBar を作成してテストする