[英]How do I replace a string between 2 certain tags
我有一个文本文件,其中包含以下文本:
<ServerAddress>.</ServerAddress>
<ServerDatabase>test</ServerDatabase>
<ServerUsername>jimmy</ServerUsername>
我希望能够替换“。” read-host
输入的一段文字。 例如,将其从<ServerAddress>.</ServerAddress>
更改为
<ServerAddress>server1</ServerAddress>
我到目前为止所需的代码都可以工作...但是它一遍又一遍地将文件中的所有内容替换为相同的字符串,因此在上面的示例中,它将用<ServerAddress>server1</ServerAddress>
替换了所有内容。
这是我到目前为止的内容:
pushd "C:\PSF\Move to V6\DTT Files"
$configFiles = Get-ChildItem . *.dtt -rec
$servername = Read-Host 'What the server name?'
$regex='(m?)>[^<]+<'
foreach ($file in $configFiles)
{
(Get-Content $file.PSPath) |
Foreach-Object { "<ServerAddress>.</ServerAddress>" -replace $regex, ">$servername<" } |
Set-Content $file.PSPath
}
不要使用正则表达式替换XML内容。 相反,将文件加载为XML,选择节点并设置值:
例:
[xml]$xml =
@'
<root>
<ServerAddress>.</ServerAddress>
<ServerDatabase>test</ServerDatabase>
<ServerUsername>jimmy</ServerUsername>
</root>
'@
$xml.DocumentElement.ServerAddress = 'newServer'
$xml.Save('yourLocation')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.