例如,我有简单的 xml
<A>
<networks type="A">
<hub id = "123">
<port>8080</port>
</hub>
<client idref = "123">
<host>some.value</host>
</client>
</networks>
</A>
<B>
<networks type="B">
<hub id = "235">
<port>9090</port>
</hub>
<client idref = "235">
<host>some.value</host>
</client>
</networks>
</B>
我使用具有特定类型的 foreach 循环遍历网络项/节点。
$networks = ($variable.SelectNodes('//networks') | Where-Object {$_.type -eq "$type*"})
foreach ($node in $networks) {
if($node.hub -ne $null) {
Write-Output 'hub:'
Write-Output 'id' $node.hub.id
Write-Output 'port' $node.hub.port
Write-Output '*********'
}
if($node.client -ne $null) {
Write-Output 'client:'
Write-Output 'idref:' $node.client.idref
Write-Output 'host:' $node.client.host
# how to pick port from networks//hub//port where hub.id = 123 by $node.client.idref here?
Write-Output '**********'
}
}
但是当当前节点是“客户端”时,我需要通过 idref 将端口与“集线器”标签区分开来。这个怎么做?