Comment modifier la valeur de L'attribut D'élément XML en utilisant PowerShell?
j'essaie d'accéder et de modifier l'attribut particulier de la balise XML
XML:
<office>
<staff branch="Hanover" Type="sales">
<employee>
<Name>Tobias Weltner</Name>
<function>management</function>
<age>39</age>
</employee>
<employee>
<Name>Cofi Heidecke</Name>
<function>security</function>
<age>4</age>
</employee>
</staff>
<staff branch="London" Type="Technology">
<employee>
<Name>XXXX</Name>
<function>gement</function>
<age>39</age>
à partir de l'exemple ci-dessus, je veux imprimer l'attribut branch et puis je veux le changer avec une valeur comme New York dans tout le XML et en utilisant le code ci-dessous pour faire cela
$xml=New-Object XML
$xml.Load("C:FE6Work.xml")
$node=$xml.SelectNodes("/office/staff")
write-output $node.branch
$node.branch="New York"
mais obtenir une erreur indiquant ne peut pas trouver l'élément.
quelqu'un peut-il aider?
21
demandé sur
love thakker
2014-07-10 18:39:27
2 réponses
essayez ce qui suit:
$nodes = $xml.SelectNodes("/office/staff");
foreach($node in $nodes) {
$node.SetAttribute("branch", "New York");
}
ceci itérera à travers tous les noeuds retournés par SelectNodes() et modifiera chacun d'eux.
26
répondu
PeterK
2015-08-25 12:27:49
vous pouvez accéder aux attributs directement dans l'objet [xml]
comme ceci:
# C:\temp> $xml = [xml](Get-Content C:\FE6Work.xml)
# C:\temp> $xml.office.staff
branch Type employee
------ ---- --------
Hanover sales {Tobias Weltner, Cofi Heidecke}
London Technology {XXXX, Cofi}
# C:\temp> $xml.office.staff | foreach{$_.branch = "New York"}
# C:\temp> $xml.office.staff
branch Type employee
------ ---- --------
New York sales {Tobias Weltner, Cofi Heidecke}
New York Technology {XXXX, Cofi}
8
répondu
zdan
2014-07-10 17:05:30