Qualcuno sa come ottenere la posizione di un nodo usando xpath?
Diciamo che ho il seguente xml:
<a>
<b>zyx</b>
<b>wvu</b>
<b>tsr</b>
<b>qpo</b>
</a>
Posso utilizzare la seguente query xpath per selezionare il terzo <b> nodo (<b> tsr </b>):
a/b[.='tsr']
Il che va benissimo, ma voglio restituire la posizione ordinale di quel nodo, qualcosa del tipo:
a/b[.='tsr']/position()
(ma un po 'più funzionante!)
È anche possibile?
modifica : ho dimenticato di menzionare che sto usando .net 2 quindi è xpath 1.0!
Aggiornamento : finito per usare James Sulak 's risposta eccellente . Per coloro che sono interessati, ecco la mia implementazione 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);
}