使用Powershell修改xml文件中的ChildNodes



我正在尝试更改xml中的值。

XML文件:

<?xml version="1.0" encoding="utf-8"?>
<settings>
  <setting name="Attach" defaultValue="False" value="" />
  <setting name="Connections" defaultValue="" value="CHANGE_THE_VALUE" />
  <setting name="Destroy" defaultValue="True" value="" />
</settings>

我需要改变"连接">

的值 Powershell:

$file = "C:New folderUserSettings.xml"
$xmldata = [xml] (Get-Content $file)
$xmldata.settings.ChildNodes
$xmldata.Save((Resolve-Path $file).Path)

我应该如何修改上面代码中的第三个字符串?

您可以使用SelectSingleNode方法来查找和更新节点,然后使用.Save,就像您已经做的那样:

$xml = [xml]::new()
$xml.Load('pathtofile.xml')
$xml.SelectSingleNode('/settings/setting[@name="Connections"]').Value = 'Hello World'
$xml.Save('pathtofile.xml')
$xmldata.settings.ChildNodes | where {$_.name -eq "Connections"} | foreach {$_.value = "new-value"}

然后你可以像以前一样保存文件。然而,这种保存方法只有在文件已经存在的情况下才有效(在您的情况下是这样,因为您正在保存到您从中读取的同一个文件)。

最新更新