2009-07-22 82 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