You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PowerShell根据XML的property子节点name值替换对应value内容

正确实现代码

方案1:XPath直接定位目标value节点(最简洁)

直接通过XPath语法筛选出name为指定值的property节点下的value子节点,一步到位修改:

$file = "site.xml"
$xml = New-Object XML
$xml.Load($file)
# 直接定位到name为access.key的property对应的value节点
$targetNode = $xml.SelectSingleNode("/configuration/property[name='access.key']/value")
$targetNode.InnerText = "{{ access_key }}"
$xml.Save($file)

如果需要修改多个配置项,只要复用这个XPath逻辑替换匹配的name值即可。

方案2:遍历property节点修改

如果你需要批量处理多个property节点,也可以用遍历的写法,注意直接访问子元素而非属性:

$file = "site.xml"
$xml = New-Object XML
$xml.Load($file)
$nodes = $xml.SelectNodes('/configuration/property') 
foreach ($node in $nodes) {
  # 访问name子元素的文本值判断,而非属性
  if ($node.name.InnerText -eq 'access.key')
    {
      # 修改同级value子元素的文本值
      $node.value.InnerText = '{{ access_key }}'
    }
}
$xml.Save($file)

之前写法的问题说明
  • 第一种错误是混淆了XML元素和属性,name和value都是property的子元素,不是属性,不能通过Attributes集合访问
  • 第二种错误是XPath选中了name节点本身,修改就会直接改掉name的取值,没有定位到需要修改的同级value节点

内容的提问来源于stack exchange,提问作者munchine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 16:36:04