¿Alguien sabe cómo obtener la posición de un nodo usando xpath?Buscar la posición de un nodo usando xpath
Decir que tengo la siguiente xml:
<a>
<b>zyx</b>
<b>wvu</b>
<b>tsr</b>
<b>qpo</b>
</a>
I puede usar la siguiente consulta XPath para seleccionar la tercera <b> nodo (<b> tsr </b >):
a/b[.='tsr']
Lo cual está muy bien, pero quiero devolver la posición ordinal de ese nodo, algo así como:
a/b[.='tsr']/position()
(pero un poco más de trabajo!)
¿Es posible?
editar: ¡He olvidado mencionar que estoy usando .net 2, así que es xpath 1.0!
actualización: acabamos utilizando James Sulak 's excellent answer. Para aquellos que estén interesados aquí está mi aplicació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);
}
'Coz estoy usando .net y, o bien, o no puedo manejar la potencia que fui con: int position = doc.SelectNodes ("a/b [. =' Tsr ']/precedente-Sibling :: b ") .Count + 1; if (position> 1 || doc.SelectSingleNode ("a/b [. = 'tsr']")! = null) // Comprobar que el nodo existe en realidad {// Hacer magia aquí} –
en cero idiomas indexados no lo haces Necesito el +1 –