none
Powershell et XML RRS feed

  • Question

  • Bonjour,

    je me lance dans la programmation powershell et l'utilisation d'un fichier xml.

    Je souhaiterais pouvoir ajouter trois balises dans un xml avec des balises déjà présentes : je m'explique dans un schéma : 

    <REQUEST> existant

        <CONTENT> existant

        </CONTENT> existant

    <REQUEST> existant

    Je souhaiterais que cela devienne :

    <REQUEST>

        <CONTENT>

            <ACCOUNTINFO> à créer

                <KEYNAME>TAG</KEYNAME> à créer

                <KEYVALUE>xxxx</KEYVALUE> à créer

            </ACCOUNTINFO> à créer

        </CONTENT>

    <REQUEST>

    Avez-vous une idée de comment programmer ceci ??

    Merci de votre aide


    Bruno

    mardi 10 juin 2014 12:27

Toutes les réponses

  • Bonjour,

    Votre code me parle pas trop.

    Qu'est ce que vous voulez coder au juste ?

    C'est quoi votre besoin?

    A+

    HK.


    Hicham KADIRI | Just Another IT Guy

    mercredi 11 juin 2014 08:42
  • Bonjour,

    je souhaiterais coder ceci en powershell.

    Créer les les trois valises accountinfo, keyname, keyvalue dans un xml existant.

    Merci


    Bruno

    mercredi 11 juin 2014 09:14
  • Bonjour,

    je souhaiterais coder ceci en powershell.

    Créer les les trois valises accountinfo, keyname, keyvalue dans un xml existant.

    Merci


    Bruno

    Bonjour Bruno,

    C'est tout à fait faisable, mais peux-tu nous donner un fichier XML pour qu'on puisse te donner les actions exactes à mener ?

    En gros, tu import ton XML dans PowerShell, tu le mets dans un objet, puis tu ajoutes des nodes grâce aux méthodes de l’objet.


    Blog
    Scripts

    mercredi 11 juin 2014 09:43
  • Bonjour Emmanuel,

    J'ai plusieurs fichiers xml dans un dossier mais je sais comment gérer en sélectionnant avec les items.

    Vous pouvez prendre un fichier au hasard pour l'exemple "C:\TEMP\test.xml".

    Il faut trouver l'expression node si je comprends bien.

    Merci


    Bruno

    mercredi 11 juin 2014 10:22
  • Bonjour Emmanuel,

    J'ai plusieurs fichiers xml dans un dossier mais je sais comment gérer en sélectionnant avec les items.

    Vous pouvez prendre un fichier au hasard pour l'exemple "C:\TEMP\test.xml".

    Il faut trouver l'expression node si je comprends bien.

    Merci


    Bruno

    Je n'ai pas accès à ton ordinateur, je ne peux donc pas récupérer le fichier.

    Peux-tu copier le contenu ici ?


    Blog
    Scripts

    mercredi 11 juin 2014 12:23
  • <?xml version="1.0" encoding="UTF-8" ?>
    <REQUEST>
        <CONTENT>
        </CONTENT>
    </REQUEST>

    Bonjour,

    voici le contenu du fichier test.

    Merci


    Bruno

    jeudi 12 juin 2014 08:57
  • C'est bon, merci j'ai trouvé avec ton indication du node :

    voilà la prog si cela intéresse quelqu'un :

    # load XML file
    [xml]$doc = Get-Content "C:\TEMP\test.xml"

    # create node <KEYNAME>
    $keyname = $doc.CreateNode('element', 'KEYNAME', '')
    $tag = $doc.CreateTextNode('TAG')
    $keyname.AppendChild($tag)

    # create node <KEYVALUE>
    $keyvalue = $doc.CreateNode('element', 'KEYVALUE', '')
    $key = $doc.CreateTextNode('key')
    $keyvalue.AppendChild($key)

    # create node <ACCOUNTINFO> and append child nodes <KEYNAME> and <KEYVALUE>
    $src = $doc.CreateNode('element', 'ACCOUNTINFO', '')
    $src.AppendChild($keyname)
    $src.AppendChild($keyvalue)

    # append node <ACCOUNTINFO> to node <CONTENT>
    $svc = $doc.SelectSingleNode('//CONTENT')
    $svc.AppendChild($src)

    $doc.Save("C:\TEMP\test2.xml")


    Bruno

    jeudi 12 juin 2014 13:38
  • Bonjour,
    une remarque en passant, les appels de méthode renvoyant des données, telles que AppendChild, doivent être annulé si on ne les utilise pas :
    $svc.AppendChild($src) > $null
    Sinon la valeur de retour est émise dans le pipeline, ce qui provoque un effet de bord.

    Beatus, qui prodest, quibus potest.

    vendredi 13 juin 2014 12:40
    Modérateur