Ajouter un attribut à un noeud xml avec powershell.
Il est à noter que vous pouvez faire une fonction si vous avez plusieurs attributs à ajouter à votre noeud, pour cela vous n’avez pas besoin de ré-affecter la valeur de l’élément, le passage par paramètre de l’élément suffit à lui seul pour le mettre à jour, donc pas besoin de return …
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
#Ouvrir le fichier xml avec un encodage UTF8 de préférence: #(Get-Item -Path ".\" -Verbose).FullName permet de récupérer le chemin absolu du répertoire courant $file = (Get-Item -Path ".\" -Verbose).FullName + "\test.xml" [xml]$xml = Get-Content -Encoding UTF8 $file #séléctionner le noeud #Il y a deux méthodes, préférez la méthode SelectSingleNode si votre élément est vide #méthode 1 [System.Xml.XmlNode]$monElement = $xml.data.mon_noeud.mon_element #méthode 2 si le noeud est vide (ni attributs ni enfants) [System.Xml.XmlNode]$monElement = $xml.SelectSingleNode('/data/mon_noeud/mon_element') #creation de l'attribut, il y a aussi deux méthodes selon si vous utilisez la racine xml ou un noeud enfant #méthode 1 $attribute = $monElement.OwnerDocument.CreateAttribute("nom_attribut") #méthode 2 $attribute = $xml.CreateAttribute("nom_attribut") $attribute.Value = "une valeur ..." #on met à jour l'élément $monElement.Attributes.Append($attribute) #puis on sauvegarde le fichier $xml.Save($file) |
testé avec
1 2 3 4 5 6 |
<data> <mon_noeud> <mon_element> </mon_element> </mon_noeud> </data> |
Ce qui donne:
1 2 3 4 5 6 |
<data> <mon_noeud> <mon_element nom_attribut="une valeur ..."> </mon_element> </mon_noeud> </data> |
Merci !Bisous et douce journée Dômi.