¿Alguien sabe cómo obtener la posición de un nodo usando xpath?
Digamos que tengo el siguiente xml:
<a>
<b>zyx</b>
<b>wvu</b>
<b>tsr</b>
<b>qpo</b>
</a>
Puedo usar la siguiente consulta xpath para seleccionar el tercer <b> nodo (<b> tsr </b>):
a/b[.='tsr']
Lo cual está muy bien, pero quiero devolver la posición ordinal de ese nodo, algo como:
a/b[.='tsr']/position()
(¡pero un poco más de trabajo!)
¿Es siquiera posible?
editar : ¡Olvidé mencionar que estoy usando .net 2 así que es xpath 1.0!
Actualización : Terminé usando la excelente respuesta de James Sulak . Para aquellos que estén interesados, aquí está mi implementación en 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);
}