尝试获取XElement的子元素时出现NullReferenceException

时间:2014-11-12 04:32:11

标签: xml linq linq-to-xml

我觉得这将是一个非常简单的解决方案,但我无法弄清楚。

我有以下Linq声明:

IEnumerable<XElement> children = from element in xElement.Descendants(xNamespace + "Email") select element;
foreach (XElement element in children)
     Console.WriteLine(element);

当我在LINQPad中执行它时,我得到了一系列XML块,正如我所料。例如:

<Email xmlns="https://xxxxxx/Email">
  <user xsi:type="xsd:string" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">someuser</user>
  <host xsi:type="xsd:string" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">somehost.com</host>
</Email>

但如果我将最后一行更改为:

     Console.WriteLine(element.Element("user").Value);

我得到NullReferenceException,这对我没有意义。为了能够获取这些子对象的值,我需要做些什么吗?

1 个答案:

答案 0 :(得分:1)

您需要添加命名空间:

 Console.WriteLine(element.Element(xNamespace + "user").Value);