XDocument.Root.Element returns null

2019-06-22 13:21发布

问题:

I have XML which is like:

<?xml version="1.0" encoding="utf-16"?>
<RootNodeName xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   xmlns:xsd="http://www.w3.org/2001/XMLSchema" MyAttribute="7" xmlns="mylink">
  <IsValid>false</IsValid>
  <Name>some matrix</Name>
  ...Some more nodes...
</RootNodeName>

and code wich is like:

var doc = XDocument.Parse(myXmlString);
Console.WriteLine(doc.Root.Element("Name"));

and console shows just an empty space since doc.Root.Element("Name") returns null =(

While I can find this Element among doc.Root.Elements() results. doc.Root.Attribute("MyAttribute") gives correct result as well.

What is wrong with it/me?

回答1:

The <Name> element is in the mylink namespace:

XNamespace mylink = "mylink";

Console.WriteLine(doc.Root.Element(mylink + "Name"));