<XMLFile>
<Pattern Pattern="1">
<ID1>10</ID1>
<ID2>2</ID2>
<ID3>01_1</ID3>
<ID4>01_1_SOTR_SOTR</ID4>
<ID5>O</ID5>
</Pattern>
</XMLFile>
我正在尝试在XML文件中搜索一组条件。在这种情况下,我正在寻找ID1 = 10
,每当我找到ID1 = 10
时,我都需要将ID5
从O
更改为L
。 (顺便提一下,我还有几百个节点块可以改变。)
所以我可以用以下内容搜索我的病情:
$_XMLFile = [xml] (Get-Content $_XMLFilePath)
$nodes = $_XMLFile.XMLFile.Pattern | % {$_.ID1 -eq '10'} |
Select-Object -Property ID5
我遇到的问题是,一旦我有了节点列表,就会改变ID5
。
我试过了
foreach ($node in $nodes) {
$nodes | % {$_.ID5 -replace "O", "L"}
}
答案 0 :(得分:1)
为什么不使用XPath来查找节点列表?
$xmlDoc = New-Object -TypeName System.Xml.XMLDocument
$xmlDoc.Load($fileName)
[System.Xml.XmlNodeList]$nodeList = $xmlDoc.SelectNodes('XMLFile/Pattern[ID1=10]/ID5')
foreach ($node in $nodeList) {
$node.'#text' = 'L'
}
$xmlDoc.Save($newFileName)