XMLファイルを入力として受け取り、そのxmlファイル内の特定の要素/タグに関連付けられた内部テキストを検索し、存在する場合はその要素/タグの位置を返すPowershellスクリプトに取り組んでいます。その要素を使用して、内部テキストを他のデータに置き換えることができます。たとえば、次のような xml ファイルがある場合があります。. .
<root>
<category>
<fruit>apple</fruit>
<vegetable>broccoli</vegetable>
<fruit>pear</fruit>
<vegetable>brussel sprouts</vegetable>
<fruit>orange</fruit>
</category>
</root>
たとえば、Powershell スクリプトの一部に、"orange" という内部テキストを見つけるためのコードがあるとします。内部テキストとして「オレンジ」を含む「果物」要素の「位置」整数を変数に格納したいと思います。したがって、上記の xml ファイルでは、位置整数は 3 (基数 0 から開始する場合は 2) になります。変数を介してこの 3 番目の「果物」の場所にアクセスするには、適切な XPath ステートメントをどのように記述すればよいでしょうか? 「オレンジ」を「バナナ」などに変更できるように、この場所にアクセスしたいのかもしれません。次のことを試しましたが、成功しませんでした。. .
$orangePosition = ??? (テスト目的で 3 の値を割り当てました)
root.SelectSingleNode("descendant::category/fruit[position()=$orangePosition]")
「position()に整数値が割り当てられている場所を見てきました。特定のファイルの内部テキスト「オレンジ」がどのインデックスであるかがわからないため、整数の代わりに変数を使用したいと思います。これは可能ですか? ? 同様の問題について質問する他の投稿を見たことがありますが、解決策 (記載されている場合) を PowerShell スクリプトに適用すると、どれも機能しないようです。