2017-12-08 10 views
0

XMLファイルから読み込んでいくつかのWebサービスを実行するスクリプトがあり、そこから応答が得られ、XML応答をWebレスポンスで修正したい以下のように。Powershellを使用して既存のXMLドキュメントに新しい要素を作成する

オリジナルXML:

<ItemNum> 
    <Key>11233</Key> 
    <Item>123.jpg</Item> 
    <Item>456.jpg</Item> 
    <Item>789.jpg</Item> 
    <Detail>Processed on 8-12-2017</Detail> 
</ItemNum> 

スクリプトはXMLからアイテムを処理し、以下に類似しITEMLIST、を反復処理します:

[xml]$xml = Get-Content -Path $xmlPath 

Foreach ($websResponse in $websResponseList) { 
    <Create New Element> 
    <Add Webs Response to Element> 
} 

$xml.save($xmlPath) 

結果が見えるように変更され、元のXMLでなければなりません以下のようになります。

<ItemNum> 
    <Key>11233</Key> 
    <Item>123.jpg</Item> 
    <Item>456.jpg</Item> 
    <Item>789.jpg</Item> 
    <Detail>Processed on 8-12-2017</Detail> 
    <WebS>00001</WebS> 
    <WebS>00002</WebS> 
    <WebS>00003</WebS> 
</ItemNum> 

PowershellのXMLと、おそらく私が達成しようとしているものと非常によく似ているものがありますが、何らかの理由で私を困惑させているので、どんなポインタにも感謝します。

答えて

1

あなたはほとんどそこにいる:

[xml]$xml = Get-Content -Path $xmlPath 

foreach ($websResponse in $websResponseList) 
{ 
    $elem = $xml.CreateElement('WebS','00001') # substitute with data 
    $xml.ItemNum.AppendChild($elem) 
} 
$xml.save($xmlPath) 
+0

おかげPalle、ほとんどそこに!これで3つの新しい要素が作成されましたが、データは「00001」ではなく「のような要素の内部にあります。これはOuterXML、InnerXmlと関係がありますか? –

+0

私はそれを持っています。 $ elem.InnerXml = '00001'だった要素の内容を余分に必要としました。ありがとうPalle! –