我有一个类似于以下格式的xml文件:
<benchmark>
<group>
<id>1</id>
<rule>
<id>H1234</id>
<severity>High</severity>
</rule>
<title>How to win</title>
</group>
<group>
<id>2</id>
<rule>
<id>5317</id>
<severity>low</severity>
</rule>
<title>How to not</title>
</group>
<group>
<id>3</id>
<rule>
<id>H15678</id>
<severity>medium</severity>
</rule>
<title>How to be</title>
</group>
<group>
<id>4</id>
<rule>
<id>H454</id>
<severity>High</severity>
</rule>
<title>How to lose</title>
</group></benchmark>
我希望能够从xml docoument中的每个组中选择组/ id,组/规则/ id,组/规则/严重性和组/标题值。
我试过这个,但它只让我成为那里的一部分:
I have tried $xml.benchmark.group | %{$_} | select title, id
感谢您的帮助!
答案 0 :(得分:11)
这对我有用:
$xml.benchmark.group |
select @{ L = 'GroupID'; E = { $_.id } },
@{ L = 'GroupTitle'; E = { $_.title } },
@{ L = 'RuleID'; E = { $_.rule.id } },
@{ L = 'RuleSeverity'; E = { $_.rule.severity } }
产生以下内容:
GroupID GroupTitle RuleID RuleSeverity
------- ---------- ------ ------------
1 How to win H1234 High
2 How to not 5317 low
3 How to be H15678 medium
4 How to lose H454 High
上面的语法类似于SQL的SELECT Foo AS Bar
,在哈希表中选择一个值(Expression
或E
)并为显示目的提供别名(Label
或{哈希表中的{1}}。
答案 1 :(得分:2)
这可以通过以下方式完成:
Clear-Host
$xmlData = [xml](Get-Content c:\temp\fic.xml)
foreach ($group in $xmlData.benchmark.group)
{
$group.id
$group.title
$group.rule.id
}
在命令行上。
([xml](Get-Content C:\temp\fic.xmlfic.xml)).benchmark.group | % {$_.id + " " + $_.rule.id}
我希望它有所帮助
JP