如何使用 Powershell 从 XML 文件中删除特定标签?
How to remove particular tag from XML file using Powershell?
下面的 xml 片段我只想从中删除 "ConnectionString" 标签
<appSettings>
父标签:
<configuration>
<appSettings>
<add key="ConnectionString" value=" Data Source=192.168.1.19;Network Library=DBMSSOCN;Initial Catalog=Demo;Persist Security Info=True; User ID=sa;Password=powershell;Application Name=web;Connect Timeout=200; pooling='true'; Max Pool Size=200;"/>
<add key="ConnectionString1" value=" Data Source=192.168.1.19;Network Library=DBMSSOCN;Initial Catalog=Demo;Persist Security Info=True; User ID=sa;Password=powershell;Application Name=web;Connect Timeout=200; pooling='true'; Max Pool Size=200;"/>
<add key="ConnectionString2" value=" Data Source=192.168.1.19;Network Library=DBMSSOCN;Initial Catalog=Demo;Persist Security Info=True; User ID=sa;Password=powershell;Application Name=web;Connect Timeout=200; pooling='true'; Max Pool Size=200;"/>
</appSettings>
</configuration>
请告诉我如何使用 powershell 执行此操作?
试试这个:
# Set file path
$File = '.\config.xml'
# Get file contents as XML
[xml]$xml = Get-Content $File
# Find node with key="ConnectionString"
$Remove = $xml.appSettings.configuration.appSettings.add |
Where-Object {$_.Key -eq 'ConnectionString'}
# Remove this node from it's parent
$xml.appSettings.configuration.appSettings.RemoveChild($Remove) | Out-Null
# Save file
$xml.Save($File)
删除由节点的父节点完成。首先找到所需的节点,您将通过 ParentNode
属性 获得其父节点。然后通过父节点,通过 RemoveChild()
删除子节点。像这样,
[xml]$doc = cat 'path/to/xml'
$nodeToRemove = $doc.SelectSingleNode("//add[@key='ConnectionString']")
$parent = $nodeToRemove.ParentNode
$parent.RemoveChild($nodeToRemove)
$doc.Save([console]::out)
下面的 xml 片段我只想从中删除 "ConnectionString" 标签
<appSettings>
父标签:
<configuration>
<appSettings>
<add key="ConnectionString" value=" Data Source=192.168.1.19;Network Library=DBMSSOCN;Initial Catalog=Demo;Persist Security Info=True; User ID=sa;Password=powershell;Application Name=web;Connect Timeout=200; pooling='true'; Max Pool Size=200;"/>
<add key="ConnectionString1" value=" Data Source=192.168.1.19;Network Library=DBMSSOCN;Initial Catalog=Demo;Persist Security Info=True; User ID=sa;Password=powershell;Application Name=web;Connect Timeout=200; pooling='true'; Max Pool Size=200;"/>
<add key="ConnectionString2" value=" Data Source=192.168.1.19;Network Library=DBMSSOCN;Initial Catalog=Demo;Persist Security Info=True; User ID=sa;Password=powershell;Application Name=web;Connect Timeout=200; pooling='true'; Max Pool Size=200;"/>
</appSettings>
</configuration>
请告诉我如何使用 powershell 执行此操作?
试试这个:
# Set file path
$File = '.\config.xml'
# Get file contents as XML
[xml]$xml = Get-Content $File
# Find node with key="ConnectionString"
$Remove = $xml.appSettings.configuration.appSettings.add |
Where-Object {$_.Key -eq 'ConnectionString'}
# Remove this node from it's parent
$xml.appSettings.configuration.appSettings.RemoveChild($Remove) | Out-Null
# Save file
$xml.Save($File)
删除由节点的父节点完成。首先找到所需的节点,您将通过 ParentNode
属性 获得其父节点。然后通过父节点,通过 RemoveChild()
删除子节点。像这样,
[xml]$doc = cat 'path/to/xml'
$nodeToRemove = $doc.SelectSingleNode("//add[@key='ConnectionString']")
$parent = $nodeToRemove.ParentNode
$parent.RemoveChild($nodeToRemove)
$doc.Save([console]::out)