如何使用命令替换文件中的内容

时间:2016-03-03 08:51:48

标签: xml powershell command-line powershell-v2.0 powershell-v3.0

我需要使用PowerShell命令将字符串替换为文件。

在文件中有XML元素,我需要用另一个字符串<version>1.0.0.0</version>替换特定元素<version>3.0.0.0</version>

对于普通字符串,我可以写如下:

(Get-Content "D:\data.text").replace('1.0.0', '3.0.0') | Set-Content D:\data.text

如何处理可替换<version></version>元素之间内容的表达式或模式。

编辑:

文件内容如下:

<?xml version="1.0"?>
<package>
  <metadata>
    <id>C:\BuildAgent_SpiderWeb\work\52d106957b762949   \buildoutput\LatestPublished</id>
    <version>3.0.0</version>
    <authors>sonidha-a</authors>
  </metadata>
</package>

需要:替换ID元素和Version元素之间的内容。

1 个答案:

答案 0 :(得分:3)

不要对XML数据进行字符串替换。永远。如果你这样做,彩虹独角兽将会死亡。

相反,使用PowerShell的XML解析器,正如@ Deadly-Bagel已经建议的那样:

[xml]$xml = Get-Content 'C:\path\to\your.xml'
$xml.package.metadata.version = '3.0.0.0'
$xml.Save('C:\path\to\output.xml')