Alex Rivera | Logout

How to query an XDocument with LINQ when elements have a colon in their name?

Asked 2009-10-28T21:04:50.323
24

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:header>
   <serv:response>
      <serv:result>SUCCESS</serv:result>
      <serv:gsbStatus>PRIMARY</serv:gsbStatus>
   </serv:response>
</serv:header>

When I use a statement like this, I get the exception 'Additional information: The ':' character, hexadecimal value 0x3A, cannot be included in a name.'

XDocument doc = XDocument.Parse(xml);
string value = doc.Descendants("serv:header").First().Descendants("serv:response").First().Descendants("serv:result").First().Value;
Edit
Report

1 Answer

6

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;
answered 2009-10-28T21:07:57.287

Your Answer