我有这个xml:
<root>
<Player uID="2363">
<Name>Roy Mark</Name>
<Position>Goalee</Position>
<Stat Type="first_name">Roy</Stat>
<Stat Type="last_name">Mark</Stat>
<Stat Type="jersey_num">2</Stat>
</Player>
<Player uID="2343">
<Name>Steve Jack</Name>
<Position>Goalee</Position>
<Stat Type="first_name">Steve</Stat>
<Stat Type="last_name">Jack</Stat>
<Stat Type="jersey_num">7</Stat>
</Player>
<root>
我想用uID 2343获得玩家的jersey_num。
我正在尝试的是:
$fileContents = [xml](gc Test.xml)
$temp1 = $fileContents.SelectNodes("/root/Player/Stat[@Type='jersey_num']").innerXML | where {$fileContents.root.Player.uID -eq "2343"}
我得到了两个球衣号码。请帮忙。
答案 0 :(得分:2)
$fileContents.SelectNodes('/root/Player[@uID="2343"]/Stat[@Type="jersey_num"]/text()')
答案 1 :(得分:1)
使用您的代码,我认为您需要更新此部分:
where {$fileContents.root.Player.uID -eq "2343"}
为:
where {$_.root.Player.uID -eq "2343"}
$ _是占位符,用于从您的命令输入数据。
答案 2 :(得分:1)
试试这个:
$player = 2343
$fileContents.SelectNodes("//*[contains(concat(' ', @uID), $player)]//Stat") | where {$_.Type -eq "jersey_num"}