1. ホーム
  2. xpath

[解決済み] XPathによるノードの位置の検索

2023-03-25 23:17:27

質問

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であることを言及するのを忘れていました!


更新 : 最終的に ジェームズ・スラック 's 優れた回答 . 興味のある方のために、私の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);
}

どのように解決するのですか?

試してみてください。

count(a/b[.='tsr']/preceding-sibling::*)+1.