Czy ktoś wie, jak uzyskać pozycję węzła za pomocą xpath?
Powiedzmy, że mam następujący plik XML:
<a>
<b>zyx</b>
<b>wvu</b>
<b>tsr</b>
<b>qpo</b>
</a>
Mogę użyć następującego zapytania xpath, aby wybrać trzeci <b> węzeł (<b> tsr </b>):
a/b[.='tsr']
Co jest w porządku, ale chcę zwrócić porządkową pozycję tego węzła, na przykład:
a/b[.='tsr']/position()
(ale trochę bardziej działa!)
Czy to w ogóle możliwe?
edycja : zapomniałem wspomnieć, że używam .net 2, więc jest to xpath 1.0!
Aktualizacja : skończyło się James Sulak „s doskonałą odpowiedź . Dla zainteresowanych moja implementacja w 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);
}