Дублирование XML-документа в переменной powershell - PullRequest
0 голосов
/ 01 октября 2019

Я борюсь с дублированием переменной 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?

любая помощь будет принята с благодарностью!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...