【发布时间】:2016-05-19 15:19:32
【问题描述】:
我想从 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
我的预期:
仪表板 工作表 D1 V1 D1 V2 D1 V3 D2 V10 D2 V11我得到了什么:
仪表板 工作表 D1 V1 D1 V2 D1 V3 D1 V10 D1 V11 D1 V14 D2 V1 D2 V2 D2 V3 D2 V10 D2 V11 D2 V14这里有什么问题?结果与我对嵌套循环如何工作的理解完全矛盾。
【问题讨论】:
标签: xml powershell