XElement的孩子

Sup*_*man 63 c# xml xelement linq-to-xml

我如何才能获得XElement的孩子?

我目前正在使用XElement.Descendants()函数,它返回所有级别的XElements,而不仅仅是子节点.

我真正想要的只是孩子们的IEnumerable.

Bev*_*van 99

通过调用或函数可以访问一个XElement的直接子元素.使用带有名称的重载来访问特定元素,或者不访问所有子元素.Element()Elements()

也有像类似的方法Attribute(),并Attributes()可能会对您有用.

  • @Tacroy每个XElement都有两组子项,其中任何一组都可能为空.一个是子元素*的有序集合,另一个是一组子*属性* - 无论你认为应该在*Children*中找到哪一个,其他人都不同意.使用`Elements`和`Attributes`遵循Xml标准的命名法. (6认同)
  • 如果您只想要第一个孩子,无论名称如何,请尝试使用`Elements().FirstOrDefault()`. (3认同)
  • 为什么他们不能称之为"XElement.Children"?方式更易被发现. (3认同)
  • @Bevan 我认为更好的答案是可能还有一组 **nodes**,每个节点可能不是一个元素。属性实际上不是元素的子元素。 (2认同)

Ste*_*ins 11

XElement.Nodes()可以得到你想要的.

如果您只想要XElement子节点,那么您可能需要使用以下命令限制它(取决于您的XML):

XElement.Nodes().OfType<XElement>()
Run Code Online (Sandbox Code Playgroud)