2009-01-28 12 views
52

¿Cómo consigo solo los hijos de un XElement?Children of XElement

Actualmente estoy usando la función XElement.Descendants(), que devuelve todos los niveles de XElements, en lugar de solo los nodos secundarios.

Lo que realmente me gustaría es un IEnumerable de solo los niños.

Respuesta

86

Los elementos secundarios inmediatos de una XElement son accesibles llamando a las funciones Element() o Elements() . Use las sobrecargas con un nombre para acceder a elementos específicos, o sin acceder a todos los elementos secundarios.

También hay métodos similares como Attribute() y Attributes() que pueden serle de utilidad.

+0

Esto parece haber resuelto la pregunta de OP pero no hay una sobrecarga sin parámetros para 'Element()' así que esto no me ayuda a obtener el primer hijo cuando sé que su 'XName' puede variar. – rtpHarry

+3

Si solo quiere el primer hijo, sin importar el nombre, intente usar 'Elements(). FirstOrDefault()'. – Bevan

+2

¿Por qué no podrían haber simplemente llamado "XElement.Children"? De manera más reconocible. – Tacroy

10

XElement.Nodes() debe conseguir lo que quiere.

Si sólo desea los nodos XElement niño entonces es posible que tenga que restringirlo (dependiendo de su XML) con:

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