XElement的子级


67

如何获得XElement的子代?

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

我真正想要的是一个只有孩子的IEnumerable。

Answers:


103

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

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


这似乎已经解决了OP的问题,但是没有无参数的重载,Element()所以当我知道第一个孩子XName会有所变化时,这对我没有帮助。
rtpHarry

3
如果您只想要第一个孩子,不用顾名思义,请尝试使用Elements().FirstOrDefault()
Bevan

3
他们为什么不能将其命名为“ XElement.Children”?方式更容易发现。
Tacroy 2012年

7
@Tacroy每个XElement都有两组子级,每组子级可以为空。一个是子元素的有序集合,另一个是子属性的集合-无论您认为应该在Children中找到哪个属性,其他人都会不同意。使用ElementsAttributes遵循Xml标准的命名法。
Bevan 2012年

2
@Bevan我认为更好的答案是可能还会有一组节点,每个节点可能不是一个元素。属性实际上不是元素的子元素。
Zev Spitz

13

XElement.Nodes()应该可以为您提供所需的东西。

如果只需要XElement子节点,则可能需要使用以下方法对其进行限制(取决于XML):

XElement.Nodes().OfType<XElement>()

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.