2017-08-02 56 views
0

我有類似XML數據:刪除節點匹配特定屬性值的

<objects> 
    <object> 
    <property name="a" /> 
    <property name="b" /> 
    <property name="hasErrors" /> 
    <property name="data" /> 
     <property/> 
     <property/> 
    </property> 
    </object> 
</objects> 

在PowerShell中,我將如何刪除有屬性name特定值的節點?更具體地說,我想刪除名稱爲「hasErrors」和「data」的節點及其子節點(如果有的話)。

回答

2

這個片段應該幫助你,我使用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") 
相關問題