2017-01-08 9 views
0

Bing Maps APIへのxml応答で値にアクセスしようとしています。 var responseXml = xdoc.Root.Element("Response").Element("ResourceSets").Element("ResourceSet").Element("EstimatedTotal").Value;のような処理を試みましたが、エラーが発生しました。CノードのXDocumentから子ノード要素の値を取得する方法

どのようにこの問題を解決するためのアイデアですか?コード

private void RequestCompleted(IAsyncResult result) 
{ 
    var request = (HttpWebRequest)result.AsyncState; 
    var response = (HttpWebResponse)request.EndGetResponse(result); 
    StreamReader stream = new StreamReader(response.GetResponseStream()); 

    try 
    { 
     XDocument xdoc = XDocument.Load(stream); 

     var responseXml = xdoc.Root.Element("Response").Element("ResourceSets").Element("ResourceSet").Element("EstimatedTotal").Value; 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show("Error" + ex.Message); 
    } 
    } 

XML応答

答えて

1

あなたはVirtual Earthのを求めている正確な質問を知っていませんが、投稿正確に私たちにxmlのより鮮明な画像を与えないxmlの画像。

しかし、多くの "のResourceSet" XElementsに1を含むXElementsの列挙を返す必要があります

var responseXml = xdoc.Descendants("ResourceSets"); 

を試してみてください。これらXElementsはと/経度緯度を照会することができます

var locations = responseXml.Descendents("GeocodePoint"); 

foreach (var loci in locations) 
    { 
     Console.WriteLine(string.Format("Lat: {0} Long: {1}", loci.Element("Latitude"), loci.Element("Longitude")); 
    } 

その行でデバッガを使用してXDOCオブジェクトで遊びます。それは、使用されるかもしれない多くの特性とメソッドを持っています。

+0

これは意味がありますが、 'GeocodePoint'内で' Latitude'と 'Longitude'の値をどうやって得ることができますか? – daveskylark

+0

@jedi nerd xdoc.Descendants( "GeocodePoint")。Element( "Latitude")は2つ以上のGeoCodePointを持っているようですので、foreachまたはlinqを使用してください。 –

+0

@jedinerd XMLドキュメントの各子孫には、Elementsを持つ子があります。私のアドバイスを受けて、デバッガまたはイミディエイトウィンドウ内のコード内のxDocオブジェクトを見てください。文字通り、SOに関するアドバイスよりも多くの方法をお手伝いできる数多くの方法があります。私は元の答えに何かを加えました。 –

2

xdoc.Root

Element("Response")あるので、これを試してみてください。

var responseXml = xdoc.Root.Element("ResourceSets").Element("ResourceSet").Element("EstimatedTotal").Value; 
+0

こんにちは!私はそれを逃したとは信じられません。しかし、それを修正してもう一度試してみると、このエラーメッセージ= "オブジェクトリファレンスがオブジェクトのインスタンスに設定されていません"というメッセージが表示されます。 – daveskylark

+0

@jedinerdエラーは表示されません。ルートからEstimatedTotalにすべてのノードを出力しようとします。おそらく、nullがどこにあるのかわかります – Backs

関連する問題