2016-04-24 13 views
1

Kann mir bitte jemand sagen, wie man die XML-Datei in Dictionary mit Powershell konvertiert.Convert XML to Dictionary

Hier ist meine XML-Datei wie folgt aussieht,

==>  <xml id="ATAT_Prod"> 
     <tag1>value1</tag1> 
     <tag2>value2</tag2> 
     </xml> 

kann mir jemand vorschlagen. Danke im Voraus.

Antwort

2

Sie müssen den Inhalt mit dem Cmdlet Get-Content laden und in [xml] umwandeln. Verwenden Sie das SelectNodes Cmdlets und einen xpath Ausdruck wählen alle Nachkommen und wandeln es in ein hashtable:

$xml = [xml] (Get-Content 'YOUR_PATH_HERE')  
$xml.SelectNodes("descendant::node()") | ? Value | % { @{$_.ParentNode = $_.Value} } 

Ausgang:

Name       Value                                      
----       -----                                      
state       Texas                                      
environment     Test                                       
isEnabled      False                                      
filepath      C:\xmlfile                                     
test       Test environement strings                                 
UAT       UAT environment strings 

bearbeiten: Hier ist eine Arbeits Beispiel mit einem Wörterbuch:

$myDictionary = New-Object "System.Collections.Generic.Dictionary``2[System.String,System.String]" 
$xml = [xml] (Get-Content 'YOUR_PATH_HERE')  
$xml.SelectNodes("descendant::node()") | ? Value | % $myDictionary.Add($_.ParentNode.ToString(), $_.Value) } 
+0

Vielen Dank Jisaak. Es funktioniert wie erwartet. Können Sie mir sagen, Hashtable und Wörterbuch sind anders, oder? Wenn diese anders sind, können Sie mir vorschlagen, wie Sie in das Wörterbuch konvertieren – mahesh

+0

Sie sind willkommen. Es gibt kein * built-in * -Wörterbuch in 'PowerShell'. Aber für Ihre Zwecke sollte auch eine Hashtable passen. Der einzige Unterschied, den ich kenne, ist, dass die Hashtabelle nicht typsicher ist, während Sie ein Wörterbuch angeben können, um eine Zeichenkette als Schlüssel (und Wert) zu verwenden. Wenn Sie das brauchen, können Sie mit 'New-Object" System.Collections.Generic.Dictionary''2 [System.String, System.String] "' ein '.net' Wörterbuch erstellen. Aber ich bezweifle, dass du es brauchst. –

+0

Jisaak, danke für die schnelle Antwort. Eigentlich möchte ich Dictionary ausprobieren. Ich bekomme Syntaxfehler. Können Sie mir bitte sagen, was ich hier vermisse, $ xml = New-Objekt "System.Collections.Generic.Dictionary''2 [System.String, System.String] $ xml.SelectNodes (" abcendant :: node () "? | Wert |% {@ {$ _. ParentNode = $ _. Wert}} .. Danke – mahesh