2009-07-22 5 views
0

Supposons que j'ai le fichier XML suivant et que je souhaite utiliser PowerShell (version 1.0) pour manipuler le fichier XML afin d'obtenir la valeur pour Foo (dans cet exemple, la valeur que je souhaite obtenir est "Foo"). Valeur ") et Goo (dans cet échantillon, la valeur que je veux obtenir est" Goo Value "), des idées sur la façon de mettre en œuvre?Problème avec le fichier XML de manipulation PowerShell

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

merci à l'avance, George

Répondre

4

L'API XPath est très vivant sous PowerShell (votre XML est, après tout, des objets .NET), et il peut souvent être le plus facile à utiliser si vous je veux juste une valeur:

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

Ou si vous voulez énumérer les ajouter des éléments comme une collection PowerShell (un peu plus PowerShell'ish :-)

$appSettingsSection = $fooConfig.configuration.appSettings.add 

imprimera

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

Et bien sûr, vous pouvez diriger ce résultat à des commandes supplémentaires pour faire tout ce que vous aimez le traitement.

+0

Cool, ma question est répondu! – George2

2

Cependant, annother approche par XPATH avec l'API XML est d'utiliser SelectNodes:

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

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

Attention là-bas! C'est un fichier de configuration et la plupart des fichiers de configuration ont de nombreux nœuds 'add'. Donc, cela saisirait les nœuds 'add' dans appSettings ainsi que connectionStrings et Dieu seul sait quoi d'autre. –

Questions connexes