私はWindowsPhoneの開発に不慣れで、現在問題に直面しています。Windows Phoneアプリケーション用のRESTfulサービスの利用に取り組んでおり、以下に示す形式で正常に応答を取得しています。
<StationsResp xmlns="http://www.wmata.com" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Stations>
<Station>
<Code>A03</Code>
<Lat>38.9095980575</Lat>
<LineCode1>RD</LineCode1>
<LineCode2 i:nil="true" />
<LineCode3 i:nil="true" />
<LineCode4 i:nil="true" />
<Lon>-77.0434143597</Lon>
<Name>Dupont Circle</Name>
<StationTogether1 />
<StationTogether2 />
</Station>
<Station>
<Code>A02</Code>
<Lat>38.9032019462</Lat>
<LineCode1>RD</LineCode1>
<LineCode2 i:nil="true" />
<LineCode3 i:nil="true" />
<LineCode4 i:nil="true" />
<Lon>-77.0397008272</Lon>
<Name>Farragut North</Name>
<StationTogether1 />
<StationTogether2 />
</Station>
</Stations>
</StationsResp>
私のC#コードは、サービスを呼び出してこの応答を保存するために以下になります。
private void MainPage_Loaded(object sender, RoutedEventArgs e)
{
Uri uri = new Uri("http://api.wmata.com/Rail.svc/Stations?api_key=API_KEY_CODE_OMITTED_INTENTIONALLY");
WebClient webClient = new WebClient();
webClient.DownloadStringCompleted += OnDownloadStringCompleted;
webClient.DownloadStringAsync(uri);
}
void OnDownloadStringCompleted(object sender, DownloadStringCompletedEventArgs args)
{
XElement elm = XElement.Load(args.Result);
var SearchResults = elm.Elements("Station");
}
私の問題は最後の行にあります。オブジェクト「elm」は、上記の応答に従って値を持ちます。ただし、[elm.Descendents()、elm.Elements()などの]メソッドを使用してオブジェクトelmをクエリしようとすると、機能しません。WindowsPhoneのSystem.Xml.Linqリファレンスバージョンは2.0.5.0です。私は何か他のものが欠けていますか?
以下は私が受け取る正確なエラーメッセージです。
ウォッチウィンドウに、オブジェクトelmの値が表示されます。しかし、LINQクエリelm.Elements( "Station")はエラーになります。エラーメッセージは「System.Collections.IEnumerator.CurrentCouldnotevaluationexpression」です。
どんな助けでも大歓迎です。前もって感謝します。