2009-01-28 8 views
52

Wie bekomme ich nur die Kinder eines XElement?Kinder von XElement

Ich verwende derzeit die XElement.Descendants() - Funktion, die alle Ebenen von XElements zurückgibt, und nicht nur die untergeordneten Knoten.

Was ich wirklich möchte, ist ein IEnumerable von nur den Kindern.

Antwort

86

der unmittelbaren untergeordneten Elemente eines XElement sind durch die Element() oder Elements() Funktionen aufrufen . Verwenden Sie die Überladungen mit einem Namen, um auf bestimmte Elemente zuzugreifen, oder ohne auf alle untergeordneten Elemente zuzugreifen. Es gibt auch ähnliche Methoden wie Attribute() und Attributes(), die Sie möglicherweise nützlich finden.

+0

Dies scheint die OPs Frage gelöst zu haben, aber es gibt keine parameterlose Überladung für 'Element()', also hilft mir das nicht, das erste Kind zu bekommen, wenn ich weiß, dass sein 'XName' variieren kann. – rtpHarry

+3

Wenn Sie nur das erste Kind wollen, unabhängig vom Namen, versuchen Sie es mit 'Elements(). FirstOrDefault()'. – Bevan

+2

Warum konnten sie nicht einfach "XElement.Children" genannt haben? Weise besser erkennbar. – Tacroy

10

XElement.Nodes() sollten Sie bekommen, was Sie wollen.

Wenn Sie nur die XElement Kindknoten wollen, dann können Sie es beschränken müssen (je nach XML) mit:

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