我有2个XML文件
第一个XML文件:
<task>
<name/>
<transfer>
<request version="6.00" xsi:noNamespaceSchemaLocation="FileTransfer.xsd">
<managedTransfer>
<originator>
<hostName>host.corp.</hostName>
<userID>jenkins</userID>
</originator>
<sourceAgent QMgr="${SourceQm}" agent="${SourceAgent}"/>
<destinationAgent QMgr="${DestQm}" agent="${DestAgent}"/>
<transferSet priority="0">
<metaDataSet>
<metaData key="site">${MdSite}</metaData>
<metaData key="businessSourceSystem">${MdSourceSystem}</metaData>
<metaData key="businessTargetSystem">${MdTargetSystem}</metaData>
<metaData key="wricef">${MdWricef}</metaData>
</metaDataSet>
</transferSet>
<job>
<name>${MonitorName}</name>
</job>
</managedTransfer>
</request>
</transfer>
</task>
第二个XML文件:
<task>
<name/>
<transfer>
<request version="6.00" xsi:noNamespaceSchemaLocation="FileTransfer.xsd">
<managedTransfer>
<originator>
<hostName>HOST.corp</hostName>
<userID>jenkins</userID>
</originator>
<sourceAgent QMgr="${SourceQm}" agent="${SourceAgent}"/>
<destinationAgent QMgr="${DestQm}" agent="${DestAgent}"/>
<transferSet priority="0">
</transferSet>
<job>
<name>${MonitorName}</name>
</job>
</managedTransfer>
</request>
</transfer>
</task>
我想获取metaDataSet下的所有子节点并将它们从一个文件移动到另一个文件
我对powershell中的XML函数感到有点迷茫 欢迎任何方向
谢谢!答案 0 :(得分:1)
解决了它
$ENV:workspace="C:\TEMP\XMLTRANS\"
$from = [xml](Get-Content $env:workspace\from.xml)
$to = [xml](Get-Content $env:workspace\from2.xml)
foreach ($node in $from.tasks.task.transfer.request.managedTransfer.transferSet.metaDataSet) {
$to.tasks.task.transfer.request.managedTransfer.transferSet.AppendChild($to.ImportNode($node,$true))}
$to.Save('C:\TEMP\XMLTRANS\last1.xml')
希望它会帮助某人:)
答案 1 :(得分:0)
我正在撰写关于在配置中添加XML节点的博客文章,这可能对您有所帮助。这是snippit:
$global:pathToConfig = "$PSScriptRoot\DistributedCacheService.exe.config" #put your path here
#force the config into an XML
$xml = [xml](get-content $pathToConfig)
#build new node by hand and force it to be an XML object
$newNode = [xml]@"
<appSettings>
<add key="backgroundGC" value="true"/>
</appSettings>
"@
#add new node AFTER the configsections node
$xml.configuration.InsertAfter($xml.ImportNode($newNode.appSettings, $true), $xml.configuration.configsections)
#save file
$xml.Save("$pathToConfig.CHANGED.XML")
通过循环子节点,您的$newNode
只需要来自其他文件的属性。
希望有所帮助!