41 votes

Comment sélectionner tous les nœuds feuilles à l'aide de l'expression XPath?

Je crois que c'est possible mais je n'ai pas pu comprendre la syntaxe. Quelque chose comme ça:

 xmlNode.SelectNodes("//*[count(child::*) <= 1]")
 

mais ce n'est pas correct.

57voto

Dimitre Novatchev Points 147842

Utilisation :

 //node()[not(node())]
 

Dans le cas où seuls des nœuds feuilles d' éléments sont souhaités (et cela nécessite une clarification - les éléments qui ont des enfants non-éléments sont-ils considérés comme des nœuds feuilles?), Alors l'expression XPath suivante les sélectionne:

 //*[not(*)]
 

Les deux expressions ci-dessus sont probablement les plus courtes qui sélectionnent les nœuds souhaités (nœuds quelconques ou éléments - nœuds feuilles).

26voto

kevpie Points 5243

Tous les éléments sans élément enfant

 //*[not(child::*)]
 

2voto

Gaby aka G. Petrioli Points 85891

Pourquoi moins ou égal à 1?

xmlNode.SelectNodes("//*[count(child::*) = 0]")

Faites des tests, etc. sur ce site http://www.whitebeam.org/library/guide/TechNotes/xpathtestbed.rhtm

Très utile ..

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X