使用变量获取 XML 个节点子节点

Get XML node children using a variable

给定以下文件:

<environments>
  <dev>
    <property1>23</property1>
    <property2>blue</property2>
    <property3>apple</property3>
  </dev>
  <prod>
    <property1>27</property1>
    <property2>red</property2>
    <property3>orange</property3>
  </prod>
</environments>

以及以下代码:

$environmentsFile = [System.Xml.XmlDocument](Get-Content "environments.xml");
$envs = $environmentsFile.environments;

$envName = "prod"

我如何访问 "prod" 个子项并遍历它们?我已经在使用 ForEach ($env in $envs.ChildNodes) {} 遍历环境,我知道我可以 $envs.prod

我试过这个:

$test = $envs.SelectNodes("//$envName")
ForEach ($ele in $test) {
    Write-Host $ele.value
}

但是没有输出任何东西。检查显示 $test 有一个包含我想要的所有节点的节点,所以我尝试了 $test[0] 但也没有用。

我做错了几件事。此函数按需运行:

$test = $envs.SelectNodes("//$envName")[0]
ForEach ($ele in $test.ChildNodes) {
    Write-Host "$($ele.Name): $($ele.InnerText)"
}