将 XML 转换为字典

Convert XML to Dictionary

谁能告诉我如何使用 Powershell 将 xml 文件转换为字典。

这是我的 xml 文件,

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

有人可以推荐我吗?提前致谢。

您必须使用 Get-Content cmdlet 加载内容并将其转换为 [xml]。使用 SelectNodescmdlet 和 xpath 表达式 select 所有 后代 并将其转换为 哈希表 :

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

输出:

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

编辑: 这是一个使用 dictionary:

的工作示例
$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)  }