wake-up-neo.com

Wie wählt man alle Blattknoten mit dem XPath-Ausdruck aus?

Ich glaube, es ist möglich, konnte aber die Syntax nicht herausfinden. Etwas wie das:

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

aber das ist nicht richtig.

41
newman

Benutzen :

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

Wenn nur element leaf-Knoten gewünscht werden (und dies muss geklärt werden - werden Elemente, die keine Element-untergeordneten Elemente sind, als leaf-Knoten betrachtet?), Werden sie vom folgenden XPath-Ausdruck ausgewählt:

//*[not(*)]

Beide Ausdrücke sind wahrscheinlich die kürzesten , die die gewünschten Knoten auswählen (entweder Knoten mit beliebigem Knoten oder Elementknoten).

56

Alle Elemente ohne untergeordnetes Element

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

Warum weniger oder gleich bis 1? 

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

Machen Sie auf dieser Site Tests usw. http://www.whitebeam.org/library/guide/TechNotes/xpathtestbed.rhtm

Ziemlich hilfreich ..

2

Ich füge diese XSLT-Antwort hinzu, da es so aussieht, als hätten die Spiele von Google keine solche Lösung:

Nach langem Kampf mit dem Extrahieren von CDATA als XML funktionierte dieser Ausdruck schließlich am besten für mich:

<xsl:template match="*[not(child::*)]/text()">
0
IC4