删除匹配特定属性值的节点
Removing Nodes matching a specific attribute value
我有 XML 类似的数据:
<objects>
<object>
<property name="a" />
<property name="b" />
<property name="hasErrors" />
<property name="data" />
<property/>
<property/>
</property>
</object>
</objects>
在 PowerShell 中,如何删除具有属性 name
特定值的节点?更具体地说,我想删除名称为 "hasErrors" 和 "data".
的节点及其子节点(如果有)
这段代码应该对你有帮助,我正在使用 Xpath 来匹配条件:
[xml]$data = @"
<objects>
<object>
<property name="a" />
<property name="b" />
<property name="hasErrors" />
<property name="data" />
<property/>
<property/>
</object>
</objects>
"@
$data.SelectNodes("//property[@name = 'data' or @name = 'hasErrors']") | % {$_.ParentNode.removechild($_) } | Out-Null
#to view properties,the empty nodes aren't visible as no value is inside.You can confirm them with count or after saving
$data.objects.object.property
$data.Save("C:\yourpath\mydata.xml")
我有 XML 类似的数据:
<objects>
<object>
<property name="a" />
<property name="b" />
<property name="hasErrors" />
<property name="data" />
<property/>
<property/>
</property>
</object>
</objects>
在 PowerShell 中,如何删除具有属性 name
特定值的节点?更具体地说,我想删除名称为 "hasErrors" 和 "data".
这段代码应该对你有帮助,我正在使用 Xpath 来匹配条件:
[xml]$data = @"
<objects>
<object>
<property name="a" />
<property name="b" />
<property name="hasErrors" />
<property name="data" />
<property/>
<property/>
</object>
</objects>
"@
$data.SelectNodes("//property[@name = 'data' or @name = 'hasErrors']") | % {$_.ParentNode.removechild($_) } | Out-Null
#to view properties,the empty nodes aren't visible as no value is inside.You can confirm them with count or after saving
$data.objects.object.property
$data.Save("C:\yourpath\mydata.xml")