IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Modules Perl Discussion :

Affecter valeur dans tag XML


Sujet :

Modules Perl

  1. #1
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Points : 923
    Points
    923
    Par défaut Affecter valeur dans tag XML
    bonjour a tous,

    je dois changer la valeur du tag 'status' dans un fichier XML.
    ci joint le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    use XML::Twig;
     
    my $ficDocXML ='C:/XML_mail/recipients.xml';
    my $ficOutXML	= 'C:/XML_mail/recipients_out.xml';
    my $FH;
     
    open ($FH,">$ficOutXML");
     
    my $twig= new XML::Twig;
     
    $twig->parsefile($ficDocXML);    # build the twig
    my $root= $twig->root;           # get the root of the twig (stats)
    my @players= $root->children;    # get the player list
     
     
    foreach my $player (@players)
     { my $status  = $player->first_child('status')->text;    # get the text of status
       print "status : $status\n";
       $player->first_child('status')->text = 3;         # bug....
     }
     
    $twig->print;
    $twig->print($FH);
    print "\n\n";
    exit(0);
    le lecture est bonne , mais pas l'affectation

    merci pour votre aide
    Errare humanum est, perseverare diabolicum (Sénèque)

  2. #2
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    La syntaxe que tu tentes d'utiliser (affecter une valeur à un appel de fonction) est possible en Perl, mais peu pratique (entre autre dans ce cas ça ne permettrait pas de réaliser automatiquement l'échappement de tous les caractères spéciaux ( '<', '&' ...) passés dans la chaîne de caractère). C'est pourquoi XML::Twig ne supporte pas cette syntaxe et offre à la place la fonction set_text.

    Donc ton code serait plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    use strict;
    use XML::Twig;
     
    my $ficDocXML ='C:/XML_mail/recipients.xml';
    my $ficOutXML	= 'C:/XML_mail/recipients_out.xml';
    my $FH;
     
    open ($FH,">$ficOutXML");
     
    my $twig= new XML::Twig;
     
    $twig->parsefile($ficDocXML);    # build the twig
    my $root= $twig->root;           # get the root of the twig (stats)
    my @players= $root->children;    # get the player list
     
     
    foreach my $player (@players) { 
      my $estatus  = $player->first_child('status');
      my $status = $estatus->text;
      print "status : $status\n";
      $estatus->set_text('3');
     }
     
    $twig->print;
    $twig->print($FH);
    print "\n\n";
    exit(0);
    --
    Jedaï

  3. #3
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Points : 923
    Points
    923
    Par défaut
    merci Jedai => c'est nickel

    je mets le code final ici pour aider peut être quelqu'un d'autre dans le cas du CDATA

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        if ($ErrorByMail ne '0'){
          my $estatus  = $player->first_child('status');    # get the text of status
          my $emessage  = $player->first_child('message');    # get the text of message
          $emessage->set_cdata($ErrorMsg);   # set the message in CDATA
          $estatus->set_text($ErrorByMail);  # set the text of status
          $nbMailKO++;
    }
    le résultat est top (l'erreur smtp est bien incluse dans un CDATA alors qu'au départ c'est une balise texte normale..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    - <files>
      <file>C:/sql.pdf</file> 
      <file>D:/test.xml</file> 
      </files>
    - <message>
    - <![CDATA[  erreur STMP serveur fails
      ]]> 
      </message>
      <status>2</status>
    Errare humanum est, perseverare diabolicum (Sénèque)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. jsp affecter valeur dans calendar
    Par moulery dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 24/09/2008, 20h20
  2. Ouvrir classeur excel et affecter valeur dans une cellule
    Par turbo_cro dans le forum VBA Access
    Réponses: 7
    Dernier message: 02/09/2008, 10h13
  3. [XML] Changement valeur dans fichier xml
    Par franzy51 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 21/08/2008, 09h23
  4. Condition pour affecter valeur dans un champ
    Par mcorvaisier dans le forum IHM
    Réponses: 9
    Dernier message: 20/06/2008, 15h45
  5. [linq] récupérer une valeur dans un xml
    Par maa dans le forum Linq
    Réponses: 8
    Dernier message: 02/02/2007, 02h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo