Кто-нибудь знает, как получить позицию узла с помощью xpath?Найти местоположение узла с помощью xpath
Скажем, у меня есть следующий XML:
<a>
<b>zyx</b>
<b>wvu</b>
<b>tsr</b>
<b>qpo</b>
</a>
можно использовать следующий XPATH запрос, чтобы выбрать третью < б > узел (< б > TSR </б >):
a/b[.='tsr']
Что все хорошо и хорошо, но я хочу вернуть порядковое положение этого узла, что-то вроде:
a/b[.='tsr']/position()
(но немного больше работать!)
Возможно ли это?
Редактировать: Забыл упомянуть, используя .net 2, так что это xpath 1.0!
Update: Законченное использованием James Sulak «s excellent answer. Для тех, кто заинтересован, вот моя реализация в 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 Я использую .net, и я либо не могу справиться с властью, с которой я пошел: int position = doc.SelectNodes ("a/b [. =' Tsr ']/previous-Sibling :: b ") .Count + 1; if (position> 1 || doc.SelectSingleNode ("a/b [. = 'tsr']")! = null) // Проверяем, что узел фактически существует {// Здесь делает магию} – 2008-10-24 09:52:59
в нуль проиндексированных языках, t нужно +1 – 2017-11-23 14:50:30