我希望能够在XML注释之间识别(和替换)XML元素。 E.g:
<!-- between here -->
<add key="userdefined1" value="something1" />
<add key="userdefined2" value="something2" />
<add key="userdefined3" value="something3" />
<!-- between here -->
我使用注释的原因是因为这是来自.NET Web项目的web.config文件。我没有使用自定义配置部分的原因是该应用程序已经存在多年,并且存在数千个现有的这些密钥引用,因此更改它们的访问方式可能会很麻烦。
答案 0 :(得分:1)
这可能不是最佳的,但它确实有效。这里有两个常量,字符串和文件名。
$comment = '<!-- between here -->'
$start = $false
ForEach ($l in (Get-Content .\testfile.config)) {
if (-not $start -and $l -notmatch $comment) {continue}
if (-not $start -and $l -match $comment ) { $start = $True }
elseif ($start -and $l -notmatch $comment) { echo $l }
elseif ($start -and $l -match $comment) { break }
}
作为替代方案:
$comment = '<!-- between here -->'
$file = '.\testfile.config'
Select-String -pattern $comment -path $file | % { if (-not $b) { $b=$_.LineNumber} else { $e=$_.LinenUmber-2}}
Get-Content $file | Select-Object -Index ($b..$e)