附加具有不同值的克隆XML节点-Powershell
我有一个XML文件,格式如下:附加具有不同值的克隆XML节点-Powershell,xml,powershell,usmt,Xml,Powershell,Usmt,我有一个XML文件,格式如下: 显示名称 无条件排除驱动器 某物 我需要根据某个值克隆标记几次,可能是4-5次 我正在尝试使用以下代码,但无法追加所有值,只能追加最终值 奇怪的是没有错误 $something = @(1, 2, 3, 4, 5, 5) foreach($num in $something) { $drivething = "D:" $xml = [xml](Get-Content -Path "C:\Temp\referenc
显示名称
无条件排除驱动器
某物
我需要根据某个值克隆
标记几次,可能是4-5次
我正在尝试使用以下代码,但无法追加所有值,只能追加最终值
奇怪的是没有错误
$something = @(1, 2, 3, 4, 5, 5)
foreach($num in $something) {
$drivething = "D:"
$xml = [xml](Get-Content -Path "C:\Temp\referenceXml.xml")
$element = $xml.migration.component.clone()
$xml.DocumentElement.AppendChild($element)
}
$xml.Save("C:\temp\newXML.xml")
预期输出为:
显示名称
无条件排除驱动器
某物
无条件排除驱动器
1.
无条件排除驱动器
2.
但我得到的只是:
显示名称
无条件排除驱动器
某物
无条件排除驱动器
5.
我不知道我错过了什么。非常感谢您的帮助。提前感谢您当前为每个循环迭代重新加载XML,因此只有最后一个循环迭代才会产生效果。XML应该在循环之前只加载一次。还可以将
$xml.migration.component
保存在一个变量中,这样即使添加了更多元素(它成为一个数组),您也可以始终以相同的方式访问它
另一方面,我用
$xml.Load()
替换了Get Content
,这可以更好地处理xml编码。谢谢你的建议,我确实尝试过,但问题是它根本不起作用,因为在第一次迭代中,它会抛出错误,因为它还不是数组,因此,它将抛出一个错误。非常感谢您的解释和解决方案。我只是让它做了一个工作,将组件转换成数组。但是这个解决方案要好得多,所以我们将使用这种逻辑。再次,非常感谢
$something = @(1, 2, 3, 4, 5, 5)
$xml = [xml]::new()
$xml.Load("C:\Temp\referenceXml.xml")
$component = $xml.migration.component
foreach($num in $something) {
$drivething = "D:"
$element = $component.clone()
$xml.DocumentElement.AppendChild($element)
}
$xml.Save("C:\temp\newXML.xml")