CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[POWERSHELL] Recuperer une valeur d'un élément xml

RlNZLER
RlNZLER
Niveau 2
17 septembre 2017 à 14:23:01

Bonjour à tous,

Après quelques recherches sur le net, je n'ai pas pu trouvé la réponse à ma question. Je me permets donc de créer ce sujet pour solliciter votre aide.

Je viens droit au but, donc voici a quoi ressemble mon fichier .xml

<route id="L1_ROUTE_UP">

<siteList>

<siteEntry id="RAN1" order="1" />

<siteEntry id="C012" order="2" />

<siteEntry id="R01" order="3" />

<siteEntry id="R02" order="4" />

<siteEntry id="R03" order="5" />

<siteEntry id="R04" order="6" />

<siteEntry id="E01" order="7" />

<siteEntry id="D01" order="8" />

<siteEntry id="EC2" order="9" />

<siteEntry id="C04" order="10" />

<siteEntry id="BL3" order="11" />

<siteEntry id="Q2" order="12" />

<siteEntry id="C01" order="13" />

<siteEntry id="C02" order="14" />

<siteEntry id="C03" order="15" />

<siteEntry id="ED06" order="16" />

</siteList>

</route>

Le but est de créer un script Powershell qui va demander à l'utilisateur d'ajouter une ID (par exemple : SLT02 ) qui va s'insérer dans la balise <siteList> de cette forme :

<siteEntry id="SLT02" order="1" />

Chaque ID doit s'inserer à la premiere position soit à ordre "1" dans <siteList>. Donc lorsque l'utilisateur va ajouter une ID, naturellement, l'ordre des autres ID déja présents dans le fichier doivent etre incrémenter de 1. Ce qui nous donne qqchose comme ca :

<route id="L1_ROUTE_UP">

<siteList>

<siteEntry id="SLT02" order="1" />

<siteEntry id="RAN1" order="2" />

<siteEntry id="C012" order="3" />

<siteEntry id="R01" order="4" />

<siteEntry id="R02" order="5" />

<siteEntry id="R03" order="6" />

<siteEntry id="R04" order="7" />

<siteEntry id="E01" order="8" />

<siteEntry id="D01" order="9" />

<siteEntry id="EC2" order="10" />

<siteEntry id="C04" order="11" />

<siteEntry id="BL3" order="12" />

<siteEntry id="Q2" order="13" />

<siteEntry id="C01" order="14" />

<siteEntry id="C02" order="15" />

<siteEntry id="C03" order="16" />

<siteEntry id="ED06" order="17" />

</siteList>

</route>

Voici mon code en powershell :

$Path = "C:\Users\Rinzler\Desktop\topology.xml"

[xml]$xmlFichier2 = Get-Content -Path $Path

$newOrderUp = 1

$xmlTargetSiteEntry = $xmlFichier2.SelectNodes('//route[@id = "L1_ROUTE_UP"]/siteList/siteEntry')

foreach($id in $xmlTargetSiteEntry)

{

$orderValue = $xmlTargetSiteEntry.getAttribute("order")

$xmlTargetSiteEntry.SetAttribute("order", $newOrderUp + $orderValue)

}

Donc le but de la boucle foreach est de recuperer chaque numéro d'ordre grace a la fonction getAttribute, puis de l'incrémenter de 1.
Sauf que Powershell me renvoie une erreur a cette ligne ci : $xmlTargetSiteEntry.SetAttribute("order", $newOrderUp + $orderValue)
Powershell :
Échec lors de l’appel de la méthode, car [System.Object[]] ne contient pas de méthode nommée « op_Addition ».
Au caractère Ligne:1 : 2
+ $xmlTargetSiteEntry.SetAttribute("order", $newOrderUp + $orderValue)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation : (op_Addition:String) [], RuntimeException
+ FullyQualifiedErrorId : MethodNotFound

J'ai ensuite regardé par rapport a ma variable $orderValue, et au lieu de stocker un par un les numéros d'ordre, elle a stocké tous les numéros d'ordre. Du coup, c'est pour ca que le setAttribute ne fonctionne pas. J'ai donc fait qql recherches pour savoir comment recuperer un par un chaque numéro d'ordre dans une variable, mais je n'ai rien trouvé de concret ...

Cordialement,

Message édité le 17 septembre 2017 à 14:23:49 par RlNZLER
Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment