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です!
更新:JamesSulakの優れた回答を使用することになりました。興味のある方のために、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);
}