2009-01-28 6 views
52

Comment obtenir les enfants d'un XElement?Enfants de XElement

J'utilise actuellement la fonction XElement.Descendants(), qui retourne tous les niveaux de XElements, plutôt que seulement les nœuds enfants.

Ce que j'aimerais vraiment, c'est un IEnumerable de seulement les enfants.

Répondre

86

Les éléments enfants immédiats d'un XElement sont accessibles en appelant les Element() ou Elements() fonctions . Utilisez les surcharges avec un nom pour accéder à des éléments spécifiques, ou sans pour accéder à tous les éléments enfants.

Il existe également des méthodes similaires telles que Attribute() et Attributes() que vous pourriez trouver utiles.

+0

Cela semble avoir résolu la question OPs mais il n'y a pas de surcharge sans paramètre pour 'Element()' donc cela ne m'aide pas à obtenir le premier enfant quand je sais que son 'XName' peut varier. – rtpHarry

+3

Si vous voulez juste le premier enfant, sans aucun nom, essayez d'utiliser 'Elements(). FirstOrDefault()'. – Bevan

+2

Pourquoi ne pouvaient-ils pas simplement l'appeler "XElement.Children"? Bien plus découvrable. – Tacroy

10

XElement.Nodes() devrait vous obtenir ce que vous voulez.

Si vous voulez juste les nœuds enfants XElement alors vous pourriez avoir besoin de le limiter (en fonction de votre XML) avec:

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