XElement的子元素是什么?

69

如何获取XElement的子元素?

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

我真正需要的是一个只包含子元素的IEnumerable集合。

3个回答

112

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

还有类似的方法,如Attribute()Attributes() 方法,您可能会发现它们很有用。


这似乎解决了提问者的问题,但是Element()没有无参数的重载,所以当我知道第一个子元素的XName可能会变化时,这并没有帮助我。 - rtpHarry
3
如果您只想要第一个子元素,而不考虑其名称,请尝试使用 Elements().FirstOrDefault() - Bevan
3
为什么他们不能称其为“XElement.Children”?这样更容易被发现。 - Tacroy
7
每个XElement都有两组子元素,其中任意一组都可以为空。一个是子元素的有序集合,另一个则是子属性的集合 - 无论你认为哪一个应该在"Children"中找到,其他人可能会有不同的看法。使用"Elements"和"Attributes"符合Xml标准的术语。 - Bevan
2
@Bevan 我认为更好的答案是可能还存在一组节点,每个节点可能不是一个元素。属性实际上并不是元素的子节点。 - Zev Spitz

13

XElement.Nodes()可以获取您想要的内容。

如果你只想获得XElement的子节点,则可能需要根据您的XML进行限制:

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接