对象的XDocument null引用不为null

时间:2011-09-26 08:44:54

标签: c# xml linq-to-xml

我有一个xml(称为xdoc)文件,如下所示:

<Root>
<ItemContainer>
<Item>
<Item>
<Item>
<Item>
</ItemContainer>
</Root>

如果我执行以下操作

XElement xel = xdoc.Element("ItemContainer");

据我所知,我应该回到对ItemContainer节点元素的引用,但我一直回到null。我已经阅读了这个

的msdn文档
  

“获取具有指定的第一个(按文档顺序)子元素   XName的。 “

据我所知,ItemContainer是第一个具有指定名称的子元素。我错过了什么?

4 个答案:

答案 0 :(得分:4)

做:

XElement xel = xdoc.Root.Element("ItemContainer");

因为,<Root>也必须处理。

XElement xel = xdoc.Element("Root").Element("ItemContainer");

也应该有用

答案 1 :(得分:1)

我认为xdoc的类型为XDocument。文档的唯一子元素是根节点<Root> 因此,您的代码应如下所示:

XElement xel = xdoc.Root.Element("ItemContainer");

答案 2 :(得分:1)

你试过......

xdoc.Root.Element("ItemContainer");

根元素是第一个元素

答案 3 :(得分:1)

正如其他人所解释的那样,XDocument的唯一孩子是根元素,所以要找到根的孩子,你必须通过根:

XElement xel = xdoc.Root.Element("ItemContainer");

或者,如果您不需要访问XML声明等内容,则可以使用XElement.Load()。它直接返回根元素:

XElement root = XElement.Load(@"c:\projects\gen\test_xml.xml");
XElement xel = root.Element("ItemContainer");