2016-05-25 8 views
0

私はGUIを表示するスクリプトを持っていて、bloatwareをアンインストールし、フラッシュ、java、ブラウザなどの一般的なものをインストールして、新しいPCを設定するプロセスに役立ちます。チェックボックスといくつかのテキストボックスがあります。特定の顧客に「プリセット」を持たせる機能が含まれています。プリセットはドロップダウンリストであり、名前が選択され、ボックスは自動的に入力されます。プリセット情報は現在CSVファイルに格納されていますが、私はXMLに移行中です。このスクリプトを使用すると、ユーザーは新しいプリセットを作成し、GUIウィンドウから既存のプリセットを変更できます。変更するには、すべてのオプションを選択し、変更する会社をドロップダウンから選択し、ユーザーがファイルの情報を更新するために「保存」をクリックします。これはCSVでうまく動作しますが、XMLで既存のプリセットを変更する方法はわかりません。PowerShellで既存のXMLデータを変更するにはどうすればよいですか?

私が参照しているGUIボックスのスクリーンショットです。視覚化が容易です。

プリセット情報は、次のようになりますXML ...ように

<Customers> 
<Name>Company Name</Name> 
<Presets Option1="TRUE" Option2="TRUE" Option3="" Option4="TRUE" /> 

<Name>Company Name 2</Name> 
<Presets Option1="" Option2="" Option3="TRUE" Option4="TRUE" /> 
</Customers> 

と...私はGUIからチェックボックスとテキストボックスの情報を取得し、変更するにはどうすればよい

特定の会社のプリセットデータですか?

私はGUIに情報を移入するために私は同様の方法でインデックス番号を使用しようとしてきたが、私はすべての運を持っていませんでした。ここで

は...そのインデックスコードです

$company = $companybox.SelectedItem 
$indexname = $CustomersXML.Customers.Name 
$index = [array]::IndexOf($indexname,$company) 
If ($customersxml.customers.presets.Uninstall[$index] -eq "True") { $uninstallbox.checked = $True }; 
+0

あなたがXML形式を変更した場合、わずかすなわち含むように含むCustomer要素を追加するという会社のためのプリセットを選択する方が簡単だろう名前とプリセットすなわち ' 何とか <プリセット... /> ... ' その後、あなたは名前、会社名と一致する顧客/プリセット要素を選択するために、XPathを使用することができます – jjee

答えて

0

$x = [xml]'<Customers><Customer><Name>one</Name><Presets A=""/></Customer><Customer><Name>two</Name><Presets A=""/></Customer></Customers>' $customerName = 'one' $x.SelectSingleNode('//Customer[Name = "' + $customerName + '"]/Presets').SetAttribute('A', 'newvalue2')

関連する問題