<department>
<employee name="ABC">
<salary value="basic">5000</salary>
<salary value="allowance">8000</salary>
</employee>
<employee name="XYZ">
<salary value="basic">6000</salary>
<salary value="allowance">3000</salary>
</employee>
</department>
如何在Powershell中获得津贴额大于基本津贴的雇员姓名。
我在下面尝试过,但没有给我结果
$result= $xml |Select-Xml '//department'|
ForEach{
$basic=$_.Node.employee.salary.value | where {$_.Node.employee.salary.value -eq 'basic'}
$allowance=$_.Node.employee.salary.value | where {$_.Node.employee.salary.value -eq 'allowance'}
if ($allowance -ge $basic)
{
$name=$_.Node.employee.name
}
}
echo $result
最佳答案
如果要使用Select-Xml
,可以执行以下操作:
$node = $xml | Select-Xml -XPath "//department/employee[./salary[@value='basic'] < ./salary[@value='allowance']]"
$node.node.name # Output the employee name
有关xpath表达式示例,请参见XPath Examples。有关XPath运算符的更多信息,请参见Boolean, Comparison, and Set Expressions,包括在必要时转义
<
和>
。
关于xml - 比较Powershell中同一父节点的两个xml元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56913630/