繁体   English   中英

如何在2个特定标签之间替换字符串

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM