PowerShell操纵XML文件问题

时间:2009-07-22 13:32:48

标签: c# .net xml powershell xpath

假设我有以下XML文件,并且我想使用PowerShell(版本1.0)来操作XML文件以获取Foo的值(在此示例中,我想得到的值是“Foo Value”)和Goo (在这个样本中,我想得到的值是“Goo Value”),任何想法如何实现?

$FooConfig = [xml](get-content .\Foo.exe.config -ErrorAction:stop)

<configuration>
 <appSettings>
    <add key="Foo" value="Foo Value" />
    <add key="Goo" value="Goo Value" />
 </appSettings>
</configuration>
提前谢谢, 乔治

2 个答案:

答案 0 :(得分:4)

XPath API在PowerShell下非常活跃(毕竟你的XML只是.NET对象),如果你只想要一个值,它通常最容易使用:

$appSettingsSection = $fooConfig.configuration.appSettings;
$goo = $appSettingsSection.SelectSingleNode("add[@key='Goo']");
$goo.Value

或者如果你想将add元素枚举为PowerShell集合(更多PowerShell'ish :-)

$appSettingsSection = $fooConfig.configuration.appSettings.add

将打印

key                                                         value
---                                                         -----
Foo                                                         Foo Value
Goo                                                         Goo Value

当然,您可以将结果传递给其他命令,以执行您喜欢的任何处理。

答案 1 :(得分:2)

使用XPATH和XML API的另一种方法是使用SelectNodes:

PS> $FooConfig .SelectNodes('//add')

key                                                         value
---                                                         -----
Foo                                                         Foo Value
Goo                                                         Goo Value