Ваш импорт идет в неправильном направлении. Вы импортируете новый созданный вами XML-документ ($xml
) в XML-документ, загруженный из XML-файла. Если вы запустите $newxml.Save([Console]::Out)
, вы увидите узел <Packages />
прямо перед закрытием </package>
.
<package>
<Application>Java</Application>
<Version>8.0.2010.9</Version>
<InstallType>Install</InstallType>
<Installers>
...
</Installers>
<Packages /> <!-- right here -->
</package>
Этот оператор импортирует $newxml
, как вы хотели:
$xml.ImportNode($newxml.get_DocumentElement(), $true) | Out-Null
но вы сразу отбрасываете результат (Out-Null
), а затем выполняете импорт в обратном направлении:
$newNode = $newxml.ImportNode($xml.get_DocumentElement(), $true)
Это будет делать то, что вы хотите:
$path = 'D:\Desktop\AutoInstall\Packages\Java v8u201\package.xml'
# create new XML document with <Packages> root node
$xml = New-Object Xml
$xml.AppendChild($xml.CreateElement('Packages')) | Out-Null
# load package XML from file and import it into $xml
$package = New-Object Xml
$package.Load($path)
$imported = $xml.ImportNode($package.DocumentElement, $true)
$xml.DocumentElement.AppendChild($imported) | Out-Null
$xml.Save([Console]::Out)