0

我是使用 PowerShell 的新手,刚刚加入了 stackoverflow。我有一个项目正在尝试解析 XML 文件并将一些特定节点导出到 csv 文件。我需要*<group>name"unique name"*从文件中的多个条目导出的成员任务# 导出到.csv。

XML 文件类似于以下示例,其中包含组名称和关联任务 # 的多个条目:

<settings><tasks><groups>
<Group Name="some name">
<Notes>Some notes here</Notes>
<Member t="task">159711687</Member>
<Member t="task">584643293</Member>
<Member t="task">465828474</Member>
<Member t="task">262255905</Member>
<Member t="task">121466829</Member>
<Member t="task">257067112</Member>
</Group>

<Group Name="some name 2">
<Notes>Testing</Notes>
<Member t="task">865485927</Member>
<Member t="task">363897901</Member>
<Member t="task">848275733</Member>
<Member t="task">471573148</Member>
<Member t="task">312701058</Member>
<Member t="task">667795378</Member>
<Member>160178363</Member>
<Member>149985003</Member>
</Group>

到目前为止,我已经得到

$xml = [xml] (gc "\\servername\path\to\file.xml")
$xml.settings.tasks.groups.group

我也试过| select member -expandproperty member但它没有正确返回格式,显然也没有返回名称。

我也试过基本的| 格式列表名称、成员 和格式表也几乎没有结果。

对于这个新手来说,任何指向正确方向的指针都会有所帮助。

提前致谢。

4

1 回答 1

0

你正朝着正确的方向前进。您只需要记住您的元素引用(代码中的第二行)实际上返回了一个元素数组。一旦你有了数组,你只需要像这样遍历它:

[xml]$xml = gc .\groups.xml
$groups = $xml.settings.tasks.groups.Group  # $groups is an array of Group elements
foreach($i in $groups) {
    write-output $i.Name         # get the Name attribute for each Group element
    foreach($j in $i.Member) {   # $i.Member is an array of Member for each Group element
        write-output $j."#text"  # get the text contained in each Member element
    }
}
于 2013-04-05T00:39:34.047 回答