Mango 対応 Silverlight 検索アプリケーションの作成(8)「今日の献立」データ読み込み、LINQ によるクエリ、日付の表示。
先に、お知らせです。
本日、Windows Phone Developer Day 開催
「UStream 中継」もあります!
さて、Mango 対応 Silverlight 検索アプリケーションの作成、前回からの続きです。
「今日の献立」の処理を説明します。
「今日の献立」のXML文書ファイルのダウンロードが完了した時の処理です。System.Xml.Linq名前空間、XElement.Parseメソッドで、変数item1Docに、XMLを格納した文字列からXElementを読み込みます。
Private Sub item1_DownloadCompleted(ByVal sender As Object, ByVal e As DownloadStringCompletedEventArgs)
Dim item1Data As String = e.Result
item1Doc = XElement.Parse(item1Data)
今日の日付を取得し、myDateという名前のTextBlockに表示します。
Dim displayDate As String = DateTime.Today.ToString("d")
myDate.Text = displayDate
LINQ to XMLを用いて、変数item1Docに読み込まれているXMLから、"画像"属性を取得します。ドメインを含むパスと連結して画像ファイル名を変数に代入します。これを絶対パスで指定して、ImageコントロールのSourceに適用します。ここでBitmapImageを使うために、前回、System.Windows.Media.Imaging名前空間をインポートしています。
Dim todayMenuImageQuery = item1Doc.Descendants("主献立").@画像
Dim todayMenuImageUri As String = "XML文書ファイルのあるサーバのドメイン名など" & todayMenuImageQuery
Image1.Source = New BitmapImage(New Uri(todayMenuImageUri, UriKind.Absolute))
LINQ to XMLを用いて、変数item1Docに読み込まれているXMLから、<主献立>、<菜食基本食材>、<菜食オプション>、<作り分け方>、<肉>、<魚介>、<乳>、<卵>の各クエリを取得し、データをそれぞれのTextBlock内に表示します。
Dim todayMenuNameQuery = item1Doc.Descendants("主献立")
TextBlock1.Text = todayMenuNameQuery.Value
Dim todayIngredientsQuery = item1Doc.Descendants("菜食基本食材")
TextBlock2.Text = "【菜食基本食材】" & vbCrLf & todayIngredientsQuery.Value
Dim todayVegeOptionQuery = item1Doc.Descendants("菜食オプション")
TextBlock3.Text = "【菜食オプション】" & vbCrLf & todayVegeOptionQuery.Value
Dim todayHowtoQuery = item1Doc.Descendants("作り分け方")
TextBlock4.Text = "【作り分け方】" & vbCrLf & todayHowtoQuery.Value
Dim todayMeatQuery = item1Doc.Descendants("肉")
Dim todayFishQuery = item1Doc.Descendants("魚介")
Dim todayMilkQuery = item1Doc.Descendants("乳")
Dim todayEggQuery = item1Doc.Descendants("卵")
TextBlock5.Text = "【肉食食材】" & vbCrLf & "肉:" & todayMeatQuery.Value & vbCrLf & "魚介類:" & todayFishQuery.Value & vbCrLf & "乳製品:" & todayMilkQuery.Value & vbCrLf & "卵:" & todayEggQuery.Value
Dim todayMenuQuery = item1Doc.Descendants("献立例")
TextBlock6.Text = "【献立例】" & vbCrLf & todayMenuQuery.Value
End Sub
次回に続きます。