2012-01-24 14 views
0

C#とASP.netでGoogleジオコーディングAPIからデータを取得しようとしています。しかし、私はXML応答に問題があります。私は有効なXMLを取得し、 "address_component"要素の他にevry要素を得ることができます。 (XMLは次のようになります。http://maps.googleapis.com/...)これは、別の方法であるGoogleジオコーディングAPIからaddress_component要素を取得できません

/* data is a string with XML from Google server */    
    XDocument receivedXml = new XDocument(); 
    receivedXml = XDocument.Parse(data); 
    XName address = XName.Get("address_component"); 

    var root = reciviedXml.Root;    //returns corect XElement 
    XElement result = root.Element("result"); //returns corect XElement 
    IEnumerable<XElement> components = result.Elements("address_component"); //returns empty collection 

、I'haveは同じ結果とにそれを試してみました。

var results = reciviedXml.Descendants("address_component"); 

そして、私のようないくつかの子孫を取得しようとすると:

var types = receivedXml.Descendants("type"); 

を、それが空のコレクションです。しかし、 "結果"タグ内の別の要素( "場所"タグのような)はうまくいく。

ありがとうございました。

答えて

0

var receivedXml = XDocument.Load("http://maps.googleapis.com/maps/api/geocode/xml?latlng=49.1962253,16.6071422&sensor=false"); 
Console.WriteLine(receivedXml.Root.Element("result").Elements("address_component").Count()); 
Console.WriteLine(receivedXml.Descendants("address_component").Count()); 

は、それぞれ10と28を書き込み。同じインスタンスを使用していることを確認してください。あなたの質問では、usereceivedXmlとreciviedXmlの2つのインスタンスXDocumentがあり、そのうちの1つに異なるデータが含まれている可能性があります。また、XDocumentをインスタンス化する必要はありません.Parse()はそれを行います(アドレス変数は使用されていないようです)

+0

本当にありがとうございました。 _components_は空ではありませんでした。 – PavelKumpan

関連する問題