我有以下XML文件。在此我想过滤所有拥有23岁员工的城市名称。
请帮我使用PowerShell脚本。
我期待着答案“Chennai,Banglore”。
<?xml version="1.0" ?>
<customers>
<city name="Chennai">
<Name>Anand</Name>
<Id>123</Id>
<Age>23</Age>
</city>
<city name="Banglore">
<Name>Arun</Name>
<Id>321</Id>
<Age>23</Age>
</city>
<city name="Mumbai">
<Name>Ashok</Name>
<Id>1</Id>
<Age>22</Age>
</city>
我有以下代码来获取城市名称列表
[xml]$test = Get-Content D:\test.xml
$names = $test.SelectNodes("/customers/city")
$sno = 0
foreach($node in $names)
{
$sno++
$id = $node.getAttribute("name")
Write-Host $sno $id
}
但我该如何过滤数据?
答案 0 :(得分:2)
了解XPath以及如何查询XML文档。关键是使用谓词来过滤数据:/customers/city[Age=23]
。像这样,
$names = $test.SelectNodes("/customers/city[Age=23]")
$sno = 0
foreach($node in $names) {
$sno++
$id = $node.getAttribute("name")
Write-Host $sno $id
}
输出:
1 Chennai
2 Banglore