2009-07-22 32 views
0

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

$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> 

由于事先 乔治

回答

4

中的XPath API是下PowerShell的非常活跃(你的XML是,毕竟只是.NET对象),它往往是最简单的,如果你使用只想值:

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

或者,如果你想枚举添加元素为PowerShell的集合(多PowerShell'ish有点:-)

$appSettingsSection = $fooConfig.configuration.appSettings.add 

将打印

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

和当然,你可以通过管道将导致额外的命令做自己喜欢的任何处理。

+0

酷,我的问题是回答! – George2 2009-07-22 13:50:59

2

然而使用XPATH与XML API annother的方法是使用的SelectNodes:

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

key               value 
---               ----- 
Foo               Foo Value 
Goo               Goo Value 
+2

小心!这是一个配置文件,大多数配置文件都有许多'添加'节点。因此,这将抓住appSettings中的'add'节点以及connectionStrings,并且God只知道还有什么。 – 2010-01-12 20:22:01