xmlノードを同じファイル内にコピーしようとしていますが、エラーが表示されます。 をご確認ください。同じファイル内のPowerShell XMLコピーノード
のPowerShellスクリプト:
$path=".."
cd $path
[xml]$xdoc = Get-Content $path
$NodeToClone = $xdoc.root.Version.Version.Builds.Build.Clone()
$xdoc.DocumentElement.AppendChild($NodeToClone)
$xdoc.Save($path)
XMLファイル:
<root>
<Versions>
<Version Number="3">
<Builds>
<Build Number="205" Version="30">
<Steps>
<Step Number="1" Build="205" Version="3">
<SubSteps>
<SubStep Number="1" comment="" />
</SubSteps>
</Step>
<Step Number="2" Build="205" Version="3">
<SubSteps>
<SubStep Number="1" Path="" File="" Action="" CSV_Type="" cq_number="" continue_on_error="" comment="" />
<SubStep Number="2" Path="" File="" Action="" CSV_Type="" cq_number="" continue_on_error="" comment="" />
</SubSteps>
</Step>
<Step Number="3" Build="205" Version="3">
<SubSteps>
<SubStep Number="1" comment="" />
</SubSteps>
</Step>
</Steps>
</Build>
</Builds>
</Version>
</Versions>
</root>
私は次の番号206のビルドノードをコピーしたいが、私は以下のエラーが取得しています:
You cannot call a method on a null-valued expression. At D:\Powershell-MyScripts\test.ps1:6 char:48 + $NodeToClone = $xdoc.root.Version.Version.Clone <<<<() + CategoryInfo : InvalidOperation: (Clone:String) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull
Exception calling "AppendChild" with "1" argument(s): "Object reference not set to an instance of an object." At D:\Powershell-MyScripts\test.ps1:7 char:34 + $xdoc.DocumentElement.AppendChild <<<< ($NodeToClone) + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : DotNetMethodException
おかげで、しかし、今では、コード1時間を実行しているノードを3回コピーされます。 – SteveScm
さて、どのノードをコピーしたいのかははっきりしないと思います。それは "ビルド"ノードか、その子供の1つ、つまり "ステップ"ノードですか?現在、コードは3つの追加の「ステップ」ノードをもたらす「ビルド」ノードをコピーします... – DAXaholic
番号の増分値を持つビルドノード全体。 205のように、次のノード206など...しかし、それは発生してはならないノードを3回コピーしています。 1回のコード実行で1回でなければなりません。 – SteveScm