SQLの窓

2013年05月26日


Win8 ストア : HttpClient + XDocument で RSS の取得

実際画面表示する場合、ビジュアル的に解りやすいので 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


タグ:xml HTTP Windows8
【Win8 ストアアプリの最新記事】
posted by lightbox at 2013-05-26 00:16 | Win8 ストアアプリ | このブログの読者になる | 更新情報をチェックする
container 終わり



フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり