2010-07-16 4 views
1

Je suis en train d'obtenir tous les nœuds d'un XElement qui a en fait une valeur, actuellement je suis en utilisant ce code:Comment obtenir tous les nœuds non vides de XElement?

var nodes = from node in elem.Nodes() 
      where node.NodeType == XmlNodeType.Element && 
        ((XElement) node).Value.Length > 0 
      select node; 

Y at-il une construction dans l'opérateur de faire cette opération?

Merci

Répondre

1

Je ne crois pas qu'il y ait quelque chose comme ça construit. Êtes-vous sûr de vouloir inclure des éléments qui ont sous-éléments bien? Par exemple:

XElement e = new XElement("Foo", new XElement("Bar")); 
Console.WriteLine(e); 
Console.WriteLine(e.Value.Length); 

Ce imprimera:

<Foo> 
    <Bar /> 
</Foo> 
0 

... donc Foo serait inclus en tant que nœud « vide » même si elle contient un autre élément. Est-ce vraiment ce que vous cherchez?

+0

Non, je ne veux pas, je veux seulement les nœuds feuilles non vides de l'élément passé. Est-ce que cela fera l'affaire? var e = à partir du noeud dans elem.Elements() où! Node.HasElements && node.Value.Length> 0 sélectionnez un noeud; – Arjor

+0

@Arjor: Vous pourriez aussi vouloir réfléchir aux attributs ... vous pourriez vouloir tester! Element.DescendantNodes(). Any() –

Questions connexes