我创建了一个生成 XML 文件的 Powershell 脚本。所有 XML 数据都在脚本中,无论需要重复什么项目,我都会根据 CSV 中的行数(减去标题)循环它们。
脚本的下一部分是我遇到问题的地方。基于相同的 CSV,我现在正在尝试修改生成的 XML 文件并进行查找和替换。我从循环中生成了需要替换的单词,例如 FName1、FName2、FName3、LName1、LName2、LName3。
我的问题是,每当我尝试从 CSV 文件中替换这些单词时,除非我对 FName1、FName2 等进行硬编码,否则什么都不会被替换。
这是我知道不正确的代码....基本上我希望它查找 FName(1,2,3 etc) 和 LName(1,2,3 etc) 的任何实例并将其替换为 $ _.FirstNames and $
_.LastNames .
$c = Import-Csv test.csv
Get-ChildItem test.xml | Foreach-Object {
$xmldoc = (Get-Content test.xml | Out-String)
$i = 0
$c | Foreach-Object {
$xmldoc = $xmldoc -replace 'FName' + $i++,$_.FirstNames `
-replace 'LName' + $i,$_.LastNames
}
$xmldoc | Set-Content test.xml
}
这是 test.xml 文件的一部分
<ItemRef ItemID="FName1" Mandatory="No"/>
<ItemRef ItemID="FName2" Mandatory="No"/>
<ItemRef ItemID="FName3" Mandatory="No"/>
<ItemRef ItemID="LName1" Mandatory="No"/>
<ItemRef ItemID="LName2" Mandatory="No"/>
<ItemRef ItemID="LName3" Mandatory="No"/>
这是 test.csv 文件:
FirstNames,LastNames
John,Doe
Jane,Doe
Mike,Smith
Samantha,Fox
任何帮助将不胜感激!
谢谢,
纳斯