来自另一个文件的PowerShell XML节点

时间:2016-03-03 04:44:10

标签: xml powershell nodes

我正在运行我的PowerShell脚本,基本上是从几个较小的XML文件创建一个大的XML文件。

该脚本打开Template.txt:

<?xml version="1.0" encoding="utf-8"?>
<Model>
  <LobSystems>
    <LobSystem>
      <LobSystemInstances>
      </LobSystemInstances>  
      <Entities>
        <!-- individual <ENTITY> from every XML file goes here -->
      </Entities>      
    </LobSystem>
  </LobSystems>
</Model>

我想要做的就是从给定文件夹中的每个XML文件复制节点<Entity>,并使用模板和信息创建一个新的MASTER.XML,并从每个.xml中提取<ENTITY>文件夹,结果如下:

<?xml version="1.0" encoding="utf-8"?>
<Model>
  <LobSystems>
    <LobSystem>
      <LobSystemInstances>
      </LobSystemInstances>  
      <Entities>

          <Entity Name="A">       // from File1.XML
             <Value>XYZ</Value>
          </Entity>

          <Entity Name="B">       // from File4.XML
             <Value>123</Value>
          </Entity>

          <Entity Name="C">       // from File3.XML
             <Value>@#$</Value>
          </Entity>

      </Entities>      
    </LobSystem>
  </LobSystems>
</Model>

到目前为止,我的脚本如下:

[xml]$master = get-content .\Template.txt
$files = get-item -Path .\*.xml -Exclude 'Master.xml'

foreach ($file in $files)
{
    [xml]$filecontents = get-content $file

    $entity = $fileContents.Model.LobSystems.LobSystem.Entities.Entity  

    $master.Model.LobSystems.LobSystem.Entities.Entity.AppendChild($entity);

}
$master.Save("Master.xml")

嗯它没有用....我一直收到有关AppendChild()

的错误消息

任何建议???

1 个答案:

答案 0 :(得分:2)

似乎首先需要import元素,因为它来自另一个XML文档实例,如下所示:

foreach ($file in $files)
{
    [xml]$filecontents = get-content $file

    $entity = $fileContents.Model.LobSystems.LobSystem.Entities.Entity  

    $importedEntity = $master.ImportNode($entity, $TRUE)

    $master.Model.LobSystems.LobSystem.Entities.AppendChild($importedEntity);

}