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

时间:2017-01-08 05:46:06

标签: c# xml

我正在尝试访问Bing Maps API的xml响应中的值。我尝试过像var responseXml = xdoc.Root.Element("Response").Element("ResourceSets").Element("ResourceSet").Element("EstimatedTotal").Value;这样的操作,但却导致了错误。

关于如何解决这个问题的任何想法?

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回复

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

不知道你问虚拟地球的确切问题,但是你发布了一张xml图片,它并没有让我们更清楚地了解xml。

然而,试试

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

这应该返回包含一对多“ResourceSet”XElements的可枚举XElements。这些XElements可以通过以下方式查询Lat / Long:

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对象。它有许多可能有用的属性和方法。