2017-08-02 3 views
0

I XML-Daten ähnlich zu haben:Entfernen von Knoten Anpassen eines bestimmten Attributwert

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

In Powershell, wie würde ich Knoten zu entfernen, die für Attribut name bestimmte Werte haben? Genauer gesagt möchte ich Knoten und ihre Kinder (falls vorhanden) mit den Namen "hasErrors" und "data" entfernen.

Antwort

2

Dieser Code-Schnipsel sollen Ihnen helfen, ich bin mit Xpath Bedingungen anzupassen:

[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") 
Verwandte Themen