XML-узел импорта Powershell из другого файла - PullRequest
5 голосов
/ 30 марта 2012

Содержимое 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")

1 Ответ

13 голосов
/ 30 марта 2012

Вы действительно близки, но ImportNode только делает копию и фактически не вставляет скопированные узлы в документ. Попробуйте это:

$newNode = $newxml.ImportNode($xml.get_DocumentElement(), $true)
$newxml.DocumentElement.AppendChild($newNode)
$xml.Save("$pwd\profile.xml")  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...