XML-узел импорта Powershell из другого файла
Содержимое profile.xml:
<files>
<file folder="CaptureServer" filename="CSConfig" object="CSConfig">
<Profile name="BBH1200Kofax">
<OutputCache>\</OutputCache>
<EncryptedConnectionString>564rgr=</EncryptedConnectionString>
<ConvertDocsBeforeRelease>false</ConvertDocsBeforeRelease>
</Profile>
</file>
<file folder="CaptureServices3" filename="CSConfig" object="CSConfig">
<Profile name="BBH1200Kofax">
<ReleaseToEnterprise>true</ReleaseToEnterprise>
<CaptureServerUrl />
<OutputCache />
<Credentials>
<EncryptedPassword>46s4rg=</EncryptedPassword>
<UserName />
<Domain />
</Credentials>
<ConvertDocsBeforeRelease>false</ConvertDocsBeforeRelease>
</Profile>
</file>
</files>
Содержание rules.xml:
<file folder="" filename="Rules" object="ArrayOfIBarcodeRule">
<Profile name="Test471">
<IBarcodeRule>
<RuleName>DOC-TESTTESTTEST-Code128</RuleName>
<FieldSequenceNumber>1</FieldSequenceNumber>
<FieldRectangle>
<Location>
<X>0</X>
<Y>0</Y>
</Location>
<Size>
<Width>0</Width>
<Height>0</Height>
</Size>
</FieldRectangle>
<SeparationValue>TESTTESTTEST</SeparationValue>
</IBarcodeRule>
</Profile>
</file>
Я пытаюсь добавить все содержимое rules.xml (файловый узел) в качестве другого узла в profile.xml. Как видите, в файле profile.xml есть куча других файловых узлов, и rules.xml будет другим.
Это код, который я пробовал, и он, похоже, ничего не делает:
$xml = [xml](Get-Content ".\profile.xml")
$newxml = [xml](Get-Content ".\rules.xml")
$xml.ImportNode($newxml.get_DocumentElement(), $true)
$xml.Save(".\profile.xml")
2 ответа
Решение
Вы действительно близки, но ImportNode только делает копию и фактически не вставляет скопированные узлы в документ. Попробуй это:
$newNode = $newxml.ImportNode($xml.get_DocumentElement(), $true)
$newxml.DocumentElement.AppendChild($newNode)
$xml.Save("$pwd\profile.xml")
Содержимое 1.xml
<files><file>123</file><file>456</file><br></files>
Содержимое 2.xml
<file>789</file>
PowerShell:
$oXML = [xml](Get-Content "1.xml")
$oNewXml = [xml](Get-Content "2.xml")
$oNewNode = $oXML.ImportNode($oNewXml.get_DocumentElement(), $true)
$oXML.DocumentElement.AppendChild($oNewNode)
$oXML.Save("3.xml")
Это отлично работает для меня