Я борюсь с дублированием переменной XmlDocument в powershell.
Сценарий создает новый XmlDocument, добавляет объявления и пространства имен, а затем генерирует некоторые графические узлы svg и сохраняет все как файл .svg.
Пока чтовсе отлично работает
Теперь я хочу создать два слегка отличающихся файла .svg (например, разных цветов) и поэтому попытаться клонировать переменную XmlDocument в новую переменную.
Простое назначение переменной следующим образом:
[Xml]$exportSecondSVG = $exportSVG
, очевидно, просто создаст ссылку, и все изменения, которые я внесу в $ exportSecondSVG , также будут влиять на оригинал $ exportSVG документ.
Итак, я попробовал этот подход с $ exportSVG.Clone () , который также не работает - $ exportSecondSVG кажется пустым:
# Create new xml File with header
[xml]$exportSVG = New-Object System.Xml.XmlDocument
# Add xml declaration header
$decNode = $exportSVG.CreateXmlDeclaration("1.0","UTF-8",$null)
$exportSVG.AppendChild($decNode) | Out-Null
# Add namespaces to svg file
$nsmgr = New-Object Xml.XmlNamespaceManager($exportSVG.NameTable)
$nsmgr.AddNamespace('xlink','http://www.w3.org/1999/xlink');
$nsmgr.AddNamespace('rdf',"http://www.w3.org/1999/02/22-rdf-syntax-ns#");
$nsmgr.AddNamespace('cc',"http://creativecommons.org/ns#");
$nsmgr.AddNamespace('dc',"http://purl.org/dc/elements/1.1/");
$nsmgr.AddNamespace('svg',"http://www.w3.org/2000/svg");
# create root svg Node
$rootSVG = $exportSVG.CreateNode("element","svg",$null)
$exportSVG.AppendChild($rootSVG) | Out-Null
# Clone original Document
[Xml]$exportSecondSVG = $exportSVG.Clone()
# DO SOME STUFF WITH $exportSVG
# DO DIFFERENT STUFF WITH $exportSecondSVG
$exportSVG.Save("D:\File1.xml")
$exportSecondSVG.Save("D:\File2.xml") # <-- Empty File!
Возможно ли как-то клонировать / продублировать переменную XmlDocument?
любая помощь будет принята с благодарностью!