使用PowerShell移除并更新XML节点:替换嵌套节点的defaultProxy
PowerShell替换XML中的嵌套defaultProxy节点
操作步骤及代码示例
假设你要修改本地配置文件(如app.config或web.config),可按以下步骤操作:
加载XML文件
将目标XML文件加载到PowerShell的XmlDocument对象中:$xmlPath = "C:\path\to\your\config.file" $xml = New-Object System.Xml.XmlDocument $xml.Load($xmlPath)定位并删除原有defaultProxy节点
通过XPath找到<system.net>下的<defaultProxy>节点并移除:$systemNetNode = $xml.SelectSingleNode("//system.net") $oldProxyNode = $systemNetNode.SelectSingleNode("./defaultProxy") if ($oldProxyNode) { $systemNetNode.RemoveChild($oldProxyNode) | Out-Null }构建新的嵌套defaultProxy节点
手动创建包含子节点的新<defaultProxy>节点:# 创建根defaultProxy节点 $newProxyNode = $xml.CreateElement("defaultProxy") # 创建<proxy>子节点并设置属性 $proxyChildNode = $xml.CreateElement("proxy") $proxyChildNode.SetAttribute("usesystemdefault", "True") $proxyChildNode.SetAttribute("proxyaddress", "http://xxxxx") $proxyChildNode.SetAttribute("bypassonlocal", "True") $newProxyNode.AppendChild($proxyChildNode) | Out-Null # 创建<bypasslist>子节点及内部的<add>节点 $bypassListNode = $xml.CreateElement("bypasslist") $addNode = $xml.CreateElement("add") $addNode.SetAttribute("address", "yyyyyy") $bypassListNode.AppendChild($addNode) | Out-Null $newProxyNode.AppendChild($bypassListNode) | Out-Null将新节点添加到system.net下并保存
把构建好的嵌套节点加入到<system.net>中,然后保存XML文件:$systemNetNode.AppendChild($newProxyNode) | Out-Null $xml.Save($xmlPath)
直接处理XML字符串的情况
如果你的XML是字符串形式而非文件,可改用以下方式加载和输出:
$xmlString = @" <system.net> <defaultProxy useDefaultCredentials="true" /> </system.net> "@ $xml = New-Object System.Xml.XmlDocument $xml.LoadXml($xmlString) # 重复上述步骤2-4的节点操作... # 输出修改后的XML字符串 $xml.OuterXml
内容的提问来源于stack exchange,提问作者O'Neil Tomlinson
相关产品推荐
相关产品推荐

