I am trying to use LINQ to XML in an with the XDocument object. How do you query the result element in the example below?
serv in your XML is a namespace prefix. It has to be associated with some URI, that identifies the namespace. Look for an attribute like this in your XML:
xmlns:serv="..."
The value inside the quotes will be the namespace. Now, in your C# code, you use that URI to create an XNamespace object:
private static readonly XNamespace serv = "...";
And then you can use that in queries like this:
string value = doc
.Descendants(serv + "header").First()
.Descendants(serv + "response").First()
.Descendants(serv + "result").First()
.Value;
By the way, you should consider using .Element() rather than .Descendants().First().
That colon means that the XML is using namespaces. Based on this blogpost someone posted about LINQ, XML, and namespaces, here's a version of your code that you might want to try.:
static XName serv(string name)
{
return XNamespace.Get("<THE_NAMESPACE_URL>") + name;
}
XDocument doc = XDocument.Parse(xml);
string value = doc.Descendants(serv("header")).First().Descendants(serv("response")).First().Descendants(serv("result")).First().Value;