Try this:
var nodeName = XNamespace.Get("http://schemas.microsoft.com/2003/10/Serialization/") + "boolean";
string value = xDoc.Descendants(nodeName).First().Value;
What does this do:
First we create a node name, with the namespace and the given name. O GetDefaultNamespace
only works if the root node has a xmlns
of http://schemas.microsoft.com/2003/10/Serialization/
. When the boolean
is the root, then the GetDefaultNamespace
works:
var nodeName = xDoc.Root.GetDefaultNamespace() + "boolean";
string value = xDoc.Descendants(nodeName).First().Value;
The Descendants
(MSDN) return a IEnumerable<XElement>
and not a simple element. This is because there can be multiple nodes in an XML document with the same name.
To convert the IEnumerable
in a XElement
, we use the methods First
, Single
or FirstOrDefault
:
First
(MSDN): Returns the first element found with the given name. Exception if there is no.
FirstOrDefault
(MSDNs): Returns the first element found with the given name. Returns null
if there is no.
Single
(MSDN): Returns the only element found with the given name. Exception if there is none or if there is more than one widget.
Finally, having the knot, we use Value (MSDN) to obtain the textual content of the node.