简体   繁体   English

如何在C#中从XDocument获取子节点元素的值

[英]How to get value of child node elements from XDocument in c#

I am trying to access values in an xml response to Bing Maps API. 我正在尝试访问Bing Maps API的xml响应中的值。 I tried doing something like var responseXml = xdoc.Root.Element("Response").Element("ResourceSets").Element("ResourceSet").Element("EstimatedTotal").Value; 我尝试做类似var responseXml = xdoc.Root.Element("Response").Element("ResourceSets").Element("ResourceSet").Element("EstimatedTotal").Value; , but it resulted in an error. ,但导致错误。

Any idea on how to solve this issue? 关于如何解决此问题的任何想法?

code

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 response xml响应

xdoc.RootElement("Response") ,因此请尝试以下操作:

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

Don't know the exact question you're asking Virtual Earth, but you posted a picture of the xml which doesn't exactly give us a clearer picture of the xml. 不知道您要问Virtual Earth的确切问题,但是您发布了xml图片,但并不能为我们提供更清晰的xml图片。

however, try 但是,尝试

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

That should return an enumerable of XElements containing one to many "ResourceSet" XElements. 那应该返回一个包含一个到多个“ ResourceSet” XElement的XElements枚举。 Those XElements could be queried for Lat/Long with: 可以使用以下命令查询纬度/经度的那些XElement:

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

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

Use the debugger at that line and play with the xDoc object. 在该行使用调试器,并使用xDoc对象。 It has lots of properties and methods which may be of use. 它具有许多可能有用的属性和方法。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM