Powershell 替换 XML 文件中的值

Bug*_*nny 2 xml powershell

我有 2 个 XML 文件,我正在从第一个文件读取一个值,需要用特定字符串替换第二个 XML 中的该值,这是我到目前为止得到的,但效果不佳,它将整个 XML 更改为 #由于某种原因文档

编辑 重新设计脚本的整个逻辑,我一直在修剪节点,在 IdexOf 处出现错误,为什么?

<BunnyTemplate> <Parm Name="A-1" Source="Application" OnAbsence="1.com"> <Parm Name="A-2" Source="Application" OnAbsence="2.com"> <Parm Name="A-3" Source="Application" OnAbsence="\\3\3"/> <Parm Name="A-4" Source="Application" OnAbsence="4.com"> </BunnyTemplate> 
Run Code Online (Sandbox Code Playgroud)
$file1 = "C:\..\Desktop\file1.xml"
$file1Content = [xml](Get-Content $file1)
$targetNode = $file1Content.SelectSingleNode("//General/@findMe")
$trimmedNode = $targetNode.Substring(0, $targetNode.IndexOf('last'))
Run Code Online (Sandbox Code Playgroud)

Mat*_*sen 5

不要-replace在 XML 文档上使用,XPath而是使用。

假设$file2包含:

<BunnyTemplate>
  <Parm Name="Bunny" Source="Bunny" OnAbsence="value-to-replace"/>
</BunnyTemplate>
Run Code Online (Sandbox Code Playgroud)

...你可以执行以下操作:

$file2Xml = [xml](Get-Content $file2)

# Locate target node
$targetNode = $file2Xml.SelectSingleNode("//Parm[@OnAbsence]")

# Overwrite attribute value
$targetNode.SetAttribute('OnAbsence', "text${trimmedNode}")

# save file
$file2Xml.Save("C:\path\to\output.xml")
Run Code Online (Sandbox Code Playgroud)

SelectSingleNode("//Parm[@OnAbsence]")<Parm>将返回具有属性的第一个节点OnAbsence

如果您特别需要使用 来定位一个,Source="Bunny"您可以使用//Parm[@Source = 'Bunny']