使用PowerShell在XML注释之间获取数据

时间:2012-08-17 18:43:48

标签: xml powershell

我希望能够在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文件。我没有使用自定义配置部分的原因是该应用程序已经存在多年,并且存在数千个现有的这些密钥引用,因此更改它们的访问方式可能会很麻烦。

1 个答案:

答案 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)