2016-04-29 15 views
1

への変換、私はそれが私のために働いていた下記のスクリプトPowerShellの辞書

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

を使用してみましたが、私のxmlファイルが別の環境固有の情報を持っているとして、それは完全なタスクを解決しませんでした。 誰かがPowerShell Version 2.0で上記の要件の可能な解決策を提案できますか?

ありがとうございます。

答えて

0

あなたはSelectNodes()パラメータ( 'UATの環境のための一例)について、次のXPath式を試すことができます。

descendant::environment[@id='UAT']/descendant::text()[normalize-space()] 

XPathを見る(適した環境の中を非空のテキストノードを返す必要がありますするXPath demo)。

+0

実際に私は以下のスクリプトを辞書変換に使用していました。 '$ myDictionary = New-Object" System.Collections.Generic.Dictionary''2 [System.String、System.String] " $ xml = [xml] (Get-Content 'YOUR_PATH_HERE') $ xml.SelectNodes( "descendant :: node()")| ?値| 'descendant :: environment [@ id = 'UAT'] /子孫::テキスト()[normalize-スペース()] 'これは上記のスクリプトですか? – mahesh

+0

@mahesh私が示唆したことは、あなたのコードの中の 'descendant :: node()'をこの答えのXPathに置き換えようとしました(私は自分自身でそれをテストしませんでした) – har07

+0

期待どおりに動作しています。どうもありがとう。 – mahesh