我正在研究一个 Powershell 脚本,该脚本将 XML 文件作为输入,在该 xml 文件中搜索与特定元素/标签关联的内部文本,并返回该元素/标签的位置(如果存在),以便该元素可用于将内部文本替换为其他一些数据。例如,可能有一个如下所示的 xml 文件。. .
<root>
<category>
<fruit>apple</fruit>
<vegetable>broccoli</vegetable>
<fruit>pear</fruit>
<vegetable>brussel sprouts</vegetable>
<fruit>orange</fruit>
</category>
</root>
因此,假设在我的 Powershell 脚本的一部分中,我有一些代码可以找到内部文本“橙色”。我想将包含“橙色”的“水果”元素的“位置”整数存储在一个变量中,因为它是内部文本。因此,在上面的 xml 文件中,位置整数将为 3(如果从零开始,则为 2)。我将如何编写正确的 XPath 语句来通过变量访问这第三个“水果”位置?也许我想访问这个位置,以便我可以将“橙色”更改为“香蕉”或其他东西。我尝试了以下但没有成功。. .
$橙色位置 = ??? (出于测试目的,我分配了 3 的值)
root.SelectSingleNode("descendant::category/fruit[position()=$orangePosition]")
我已经看到“位置()”被分配了一个整数值。我想使用一个变量来代替整数,因为我不知道特定文件中的内部文本“橙色”可能是什么索引。这甚至可能吗?我看过其他质疑类似问题的帖子,但是当我将解决方案(如果有的话)应用于powershell脚本时,它们似乎都不起作用。关于如何解决这个问题的任何想法?