使用PowerShell从XML过滤数据

时间:2013-04-03 06:10:17

标签: powershell

我有以下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
}

但我该如何过滤数据?

1 个答案:

答案 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