XPath を使用してノードの位置を取得する方法を知っている人はいますか?
次の xml があるとします。
<a>
<b>zyx</b>
<b>wvu</b>
<b>tsr</b>
<b>qpo</b>
</a>
次の xpath クエリを使用して、3 番目の <b> ノード (<b>tsr</b>) を選択できます。
a/b[.='tsr']
これで問題ありませんが、次のようなノードの序数位置を返したいと思います。
a/b[.='tsr']/position()
(しかし、もう少し機能します!)
それは可能ですか?
編集:.net 2を使用していることに言及するのを忘れたので、xpath 1.0です!
更新: James Sulakの優れた回答を使用することになりました。興味のある方のために、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);
}