Wie alle Blattknoten mit XPath-Ausdruck wählen?
-
30-09-2019 - |
Frage
Ich glaube, es ist möglich, kann aber nicht die Syntax herauszufinden. So etwas wie folgt aus:
xmlNode.SelectNodes("//*[count(child::*) <= 1]")
, aber das ist nicht korrekt.
Lösung
Mit
//node()[not(node())]
Falls nur -Element Blattknoten gesucht werden (und diese Klarstellung Bedürfnisse - sind Elemente, die nicht-Element Kinder als Blattknoten haben?), Dann die folgenden XPath-Ausdruck wählt sie:
//*[not(*)]
Beide Ausdrücke oben sind wahrscheinlich die kürzeste , dass die gewünschten Knoten auszuwählen (entweder beliebigen Knoten oder Element - Endknoten).
Andere Tipps
Alle Elemente ohne Element Kind
//*[not(child::*)]
Warum weniger oder gleich zu 1?
xmlNode.SelectNodes("//*[count(child::*) = 0]")
Make-Tests usw. auf dieser Seite http://www.whitebeam.org/ Bibliothek / guide / TechNotes / xpathtestbed.rhtm
Pretty hilfreich ..
Ich füge dieses XSLT Antwort, da es Googles Front Matches fehlt eine solche Lösung scheint:
Nach einem langen Kampf mit CDATA als XML-Extraktion, schließlich arbeitete dieser Ausdruck am besten für mich:
<xsl:template match="*[not(child::*)]/text()">