Weiß jemand, wie man mit xpath die Position eines Knotens ermittelt?
Angenommen, ich habe die folgende XML:
<a>
<b>zyx</b>
<b>wvu</b>
<b>tsr</b>
<b>qpo</b>
</a>
Ich kann die folgende xpath-Abfrage verwenden, um den dritten <b> -Knoten (<b> tsr </ b>) auszuwählen:
a/b[.='tsr']
Welches ist alles schön und gut , aber ich möchte zurückkehren , die Ordnungsposition des Knotens, so etwas wie:
a/b[.='tsr']/position()
(aber ein bisschen mehr arbeiten!)
Ist es überhaupt möglich?
edit : Ich habe vergessen zu erwähnen, dass ich .net 2 benutze, also ist es xpath 1.0!
Update : Beendet mit bis James Sulak ‚s ausgezeichnete Antwort . Für diejenigen, die interessiert sind, hier ist meine Implementierung in C #:
int position = doc.SelectNodes("a/b[.='tsr']/preceding-sibling::b").Count + 1;
// Check the node actually exists
if (position > 1 || doc.SelectSingleNode("a/b[.='tsr']") != null)
{
Console.WriteLine("Found at position = {0}", position);
}