私はすでに既存のトピックを見てきましたが、何も見つかりませんでした.2つのXMLファイルがあり、いくつかの行を除いてほぼ同じです。目的は、最初の XML から値を取得し、それを 2 番目の XML に追加してから、2 番目の XML が最初の XML ファイルを消去することです。
これが最初のファイルの構造です
<configuration >
<protocol>
<NATIVE>
</NATIVE>
<ICAP>
</ICAP>
<RPC>
<ClientList>
<items>
<item value="X.X.X.X">
<item value="A.A.A.A">
</items>
</ClientList>
</configuration>
そして2番目のファイル:
<configuration >
<protocol>
<NATIVE>
</NATIVE>
<ICAP>
</ICAP>
<RPC>
<ClientList>
<items>
<item value>
</items>
</ClientList>
</configuration>
目的は、"Item Value = ..." の行を取得し、それを 2 番目の XML ファイルに挿入することです。存在する可能性のあるすべての行に対して
値を TXT ファイルに保存してから、次のように TXT からインポートします。
$xmlpath1 = "c:\temp\configuration.xml"
$xmlpath2 = "c:\configuration1.xml"
$xmlpath3 = "c:\temp\output.txt"
[xml]$xd= Get-Content $xmlpath1
[xml]$xd2= Get-Content $xmlpath2
$rpc=($xd.configuration.protocol.RPC.ClientList.items.item )
$rpc2=($xd2.configuration.protocol.RPC.ClientList.items.item )
foreach($value in $rpc2){
$value.value >> "c:\temp\output.txt"
}
$txt = get-content $xmlpath3
foreach($line in $txt){
$a=$xd.configuration.protocol.RPC.ClientList.items["item"]
$new=$xd.CreateElement("item")
[void]$a.AppendChild($new)
$a.setattribute("value","$line")
$xd.Save($xmlpath1)
}
しかし、取得する代わりに:
<ClientList>
<items>
<item value="X.X.X.X">
<item value="A.A.A.A"/>
<item value="B.B.B.B"/>
<item value="C.C.C.C"/>
</item>
</items>
</ClientList>
私は得た:
<ClientList>
<items>
<item value="C.C.C.C"> <== Last entry read by PS...
<item />
<item />
<item />
</item>
</items>
</ClientList>
さまざまな方法でテストした場合、すべてが成功しませんでした。何か提案があれば、それは素晴らしいことです!