Я пытаюсь условно обновить блок XML в файле. Это целевой блок XML
<Data Description="Runs a keyword test." TestName="MenuAction_DataDriver">
<Parameters LangId="{897793E3-73F3-4895-A956-3D41D3A24A45}">
<Parameter Name="FilePath" DefVarType="8" DefValueType="6" DefValueValue="Excel Workbooks\MenuAction.xlsx" VarType="8" ValueType="6" ValueValue="Excel Workbooks\MenuAction.xlsx" />
<Parameter Name="Sheet" DefVarType="8" DefValueType="6" DefValueValue="Sheet1" VarType="8" ValueType="6" ValueValue="Sheet1" />
<Parameter Name="Caller" DefVarType="8" DefValueType="6" DefValueValue="" VarType="8" ValueType="6" ValueValue="FileClose" />
</Parameters>
</Data>
Существует несколько подобных узлов и другие узлы <Data>
, которые не имеют этих параметров. Поэтому я пытаюсь перебрать файл, ища <Data>
узлы со свойством TestName
«MenuAction_DataDriver», а затем специально ищу только те узлы, где Parameter[2].ValueValue
- «FileClose». Затем я хочу изменить Parameter[1].ValueValue
с «Лист1» на «Файл».
Это моя нынешняя попытка:
$xmlFileName = 'C:\<PathToFileRedacted>.tcKDTest'
[xml]$xmlDoc = Get-Content $xmlFileName
$xmldoc.Root.SelectSingleNode("//Data[@TestName='MenuAction_DataDriver']") |
? { $_.Parameters.Parameter.ValueValue[2] -eq 'FileClose'} |
% {$_.Parameters.Parameter.ValueValue[1] = "File"}
$xmlDoc.Save($xmlFileName)
Куда я иду с этим?