我想从xml文件中提取所有窗口和所有视点节点的名称属性的值。使用PowerShell通过xml-节点嵌套循环
<?xml version='1.0' encoding='utf-8' ?>
<workbook>
<windows>
<window class='dashboard' name='D1'>
<viewpoints>
<viewpoint name='V1'> </viewpoint>
<viewpoint name='V2'> </viewpoint>
<viewpoint name='V3'> </viewpoint>
</viewpoints>
</window>
<window class='dashboard' name='D2'>
<viewpoints>
<viewpoint name='V10'> </viewpoint>
<viewpoint name='V11'> </viewpoint>
</viewpoints>
</window>
</windows>
</workbook>
这是我写的代码:
[XML]$doc = get-content -path 'W:\Demo1.xml'
$objs = @()
$dashboards = $doc.SelectNodes("//window[@class = 'dashboard']")
foreach ($dashboard in $dashboards)
{
$worksheets = $dashboard.SelectNodes("//viewpoint[@name]")
foreach ($worksheet in $worksheets)
{
$obj = new-object psobject -prop @{Dashboard=$dashboard.name; Worksheet = $worksheet.name};
$objs += $obj;
}
}
$objs
我期待什么:
dashboard worksheet D1 V1 D1 V2 D1 V3 D2 V10 D2 V11
我得到了什么:
dashboard worksheet D1 V1 D1 V2 D1 V3 D1 V10 D1 V11 D1 V14 D2 V1 D2 V2 D2 V3 D2 V10 D2 V11 D2 V14
这里有什么问题?结果与我对嵌套循环如何工作的理解完全矛盾。
您节省了我的一天。谢谢。我花了好几个小时才发现错误,只有一点点缺失...... – Nylix