Question

Je crois qu'il est possible, mais ne pouvait pas comprendre la syntaxe. Quelque chose comme ceci:

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

mais ce n'est pas correct.

Était-ce utile?

La solution

Utilisez :

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

Dans le cas seulement élément nœuds feuilles sont recherchés (et ce besoin de clarification - sont des éléments qui ont des enfants non-éléments considérés comme des noeuds feuilles?), Puis les sélectionne d'expression XPath les suivant:

//*[not(*)]

Les deux expressions ci-dessus sont probablement les plus brefs que sélectionner les noeuds souhaités (soit tout-noeud ou élément - nœuds de feuilles).

Autres conseils

Les éléments sans élément enfant

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

Pourquoi moins ou égal à 1?

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

Faire des tests etc sur ce site http://www.whitebeam.org/ bibliothèque / Guide / TechNotes / xpathtestbed.rhtm

Assez utile ..

J'ajoute cette réponse XSLT car il semble matchs avant de Google ne disposent pas d'une telle solution:

Après une longue lutte avec extraction CDATA comme XML, par la suite, cette expression fonctionne le mieux pour moi:

<xsl:template match="*[not(child::*)]/text()">
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top