C# XDocument子体正在抛出空引用

C# XDocument子体正在抛出空引用,c#,xml,linq,xelement,C#,Xml,Linq,Xelement,我有这样一个XML文档: <?xml version="1.0" encoding="utf-8"?> <Settings updated="3/21/2017 15:48"> <Setting name="ToolTipVariables">&lt;?xml version="1.0" encoding="utf-16"?&gt; &lt;ArrayOfString xmlns:xsi="http://www.w3.org/200

我有这样一个XML文档:

<?xml version="1.0" encoding="utf-8"?>
<Settings updated="3/21/2017 15:48">
  <Setting name="ToolTipVariables">&lt;?xml version="1.0" encoding="utf-16"?&gt;
&lt;ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt;
  &lt;string&gt;Title&lt;/string&gt;
  &lt;string&gt;Date&lt;/string&gt;
  &lt;string&gt;Description&lt;/string&gt;
  &lt;string&gt;Location&lt;/string&gt;
  &lt;string&gt;Id&lt;/string&gt;
&lt;/ArrayOfString&gt;</Setting>
  <Setting name="ToolTipVariables">&lt;?xml version="1.0" encoding="utf-16"?&gt;
&lt;ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt;
  &lt;string&gt;Title&lt;/string&gt;
  &lt;string&gt;Date&lt;/string&gt;
  &lt;string&gt;Description&lt;/string&gt;
  &lt;string&gt;Location&lt;/string&gt;
  &lt;string&gt;Id&lt;/string&gt;
&lt;/ArrayOfString&gt;</Setting>
  <Setting name="ToolTipVariables">&lt;?xml version="1.0" encoding="utf-16"?&gt;
&lt;ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt;
  &lt;string&gt;Title&lt;/string&gt;
  &lt;string&gt;Date&lt;/string&gt;
  &lt;string&gt;Description&lt;/string&gt;
  &lt;string&gt;Location&lt;/string&gt;
  &lt;string&gt;Id&lt;/string&gt;
&lt;/ArrayOfString&gt;</Setting>
  <Setting name="ShowUpdateWindow">&lt;?xml version="1.0" encoding="utf-16"?&gt;
&lt;boolean&gt;true&lt;/boolean&gt;</Setting>
</Settings>
XDocument document = XDocument.Load(settingsPath); //settingsPath is where the XML Document is located
XElement element = document.Descendants("Settings").Where(x => x.Attribute("name").Value == "ToolTipVariables").FirstOrDefault();

但在尝试获取FirstOrDefault时,它会不断抛出null引用异常。也许我在某个地方犯了个简单的错误,但我找不到。任何帮助都将不胜感激

问题是您正在选择名为
设置
(实际上是根节点)的所有元素。代码
文档。子体(“设置”)
将为您提供元素名称为
设置
的文档的所有子体。我认为您真正想要的是所有
设置
元素。这将有助于:

XElement element = document.Descendants("Setting")
    .Where(x => x.Attribute("name").Value == "ToolTipVariables")
    .FirstOrDefault();

显然,在某些情况下,
x.Attribute(“name”)
必须为null,因此您需要
Where(x=>(string)x.Attribute(“name”)==“ToolTipVariables”)
Ah-这是一个愚蠢的错误;)。我把“后代”理解为“这个的后代”,而不是“命名为这个的后代”。非常感谢。