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 :

[XML::Twig] Changer nom de balise xml et recherche de documentation en francais


Sujet :

Modules Perl

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 106
    Points : 31
    Points
    31
    Par défaut [XML::Twig] Changer nom de balise xml et recherche de documentation en francais
    Bonjour a tous,

    j'ai beau cherché de la doc sur du XmlTwig en français, mai je trouve qu'en anglais, y aurait'il parmi vous qui pe m'indique ou je peux trouvé de la doc en français vue que moi et l'anglais ca fé 2.

    merci d'avance
    bonne journée

  2. #2
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Tu peux déjà consulter l'excellent tutoriel de Djibril:

    http://djibril.developpez.com/tutoriels/perl/perl-xml/

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 106
    Points : 31
    Points
    31
    Par défaut
    merci LOLO
    c'est déjà fais

  4. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Bonjour,

    Déjà quelques remarques très importantes :
    1. lorsque vous cherchez la documentation d'un module, elle ne se trouve principalement que sur le site du CPAN et c'est toujours en anglais. Il va falloir s'y faire car c'est la langue de référence en informatique. Si l'anglais et vous ça fait deux, bah va falloir s'améliorer car le code fourni fera également deux avec vous ;
    2. mon article cité ci-dessus par LOlo78 pourra vous donner un premier aperçu du module. Vous y trouverez en fin d'article une liste de liste de liens dont celui du créateur du module qui contient une documentation avec des exemples, mais c'est aussi en anglais .


    La seule chose que vous pourrez avoir en français est de l'aide sur ce forum, ce qui est déjà très intéressant.
    Bonne Lecture !

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 106
    Points : 31
    Points
    31
    Par défaut Erreur : changer nom de balise xml
    Bonjour,

    je cherche a modifier le nom de quelques balise, c-a-d, dans la balise <Prenoms> j'ai plusieur balise <Prenom> a l'interieur et j'aimerai modifier le nom de ses dernier pour avoir <Prenom1><Prenom2>...
    Code xml : 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
    28
    29
    <?xml version="1.0" encoding="UTF-8"?>
    <Lettre>
        <Enveloppe>
           <ligne>01</ligne>
        </Enveloppe>
        <Individu>
            <Demande>
                <Personne>
                    <Noms>
                        <NomF>foot</NomF>
    					<NomU>ball</NomU>
                    </Noms>
                    <Prenoms>
                        <Prenom>AAAA</Prenom>
    					<Prenom>BBBB</Prenom>
     <Prenom>CCC</Prenom>
                    </Prenoms>
                    <Naissance>
                        <Date>2012-06-20</Date>
                        <Lieu>
                            <Localite code="75000"/>
    						<Pays>France</Pays>
                        </Lieu>
                    </Naissance>
                    <Sexe>Homme</Sexe>
                </Personne>
            </Demande>
        </Individu>
    </Lettre>

    pour cela j'ai ecrit le code suivant mai ca ne marche pas, je sais pas comment utilisé la balise children et comment atteindre la balise <Prenoms> en profondeur: mon code perl le voila
    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
    #!/usr/bin/perl
    use XML::Twig;
     
    my $t= XML::Twig->new();
      $t->parsefile( 'fichier.xml');
      my $root= $t->root;
      my @Individu = $root->children ( 'Individu');
      foreach my $Individu (@Individu) {
    	$i = 1;
    	foreach my $Prenom ( $Individu->children('Demande')->children('Personne')->children('Prenoms')->children('Prenom'))
     
    		{ $Prenom->set_tag( 'Prenom'.$i); 
    		$i = $i+1;
    		}           # turn them into p
    	}
    open(PF, "> out.xml") or die "can't open file $!\n";
    $t->print(\*PF);                            # output the document
    merci d'avance de vos réponse

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 106
    Points : 31
    Points
    31
    Par défaut
    Bonjour ,

    djibril, dans l'exemple que vous traité, il est constitué de 3Niveau (annuaire,personne,langage), mais moi je comprend pas comment on peut atteindre un niveau encore plus haut vue que j'ai un fichier avec 6 ou 7 niveau, je veux changer le nom d'une balise qui est au 6eme niveau, j'écris le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    my @Individu = $root->children ( 'Individu');
    $i = 1;
    	foreach my $Prenom ( $Individu->children('Demande')->children('Personne')->children('Prenoms')->children('Prenom'))
     
    		{ $Prenom->set_tag( 'Prenom'.$i); 
    		$i = $i+1;
    		}
    mai ca na pas l'air de fonctionné.
    quelqu'un pourrez me donnée quelque indication
    merci a tous

  7. #7
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Bonjour,

    Pouvez-vous me montrer votre fichier XML et me redire ce que vous souhaitez faire ?
    Il y a peut-être une façon simple de procéder pour réaliser votre programme avec XML::Twig.

  8. #8
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Lorsque vous poster du code ou des exemples, merci de les indenter. Cela permet d'avoir une meilleure lisibilité.

    Voici donc votre fichier XML :
    Code xml : 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
    28
    29
    <?xml version="1.0" encoding="UTF-8"?>
    <Lettre>
      <Enveloppe>
        <ligne>01</ligne>
      </Enveloppe>
      <Individu>
        <Demande>
          <Personne>
            <Noms>
              <NomF>foot</NomF>
              <NomU>ball</NomU>
            </Noms>
            <Prenoms>
              <Prenom>AAAA</Prenom>
              <Prenom>BBBB</Prenom>
              <Prenom>CCC</Prenom>
            </Prenoms>
            <Naissance>
              <Date>2012-06-20</Date>
              <Lieu>
                <Localite code="75000"/>
                <Pays>France</Pays>
              </Lieu>
            </Naissance>
            <Sexe>Homme</Sexe>
          </Personne>
        </Demande>
      </Individu>
    </Lettre>
    Vous souhaitez le transformer en quel fichier ?

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 106
    Points : 31
    Points
    31
    Par défaut
    Re -bonjour

    le fichier XML est le suivant :
    Code xml : 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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    <?xml version="1.0" encoding="UTF-8"?>
    <Lettre>
        <Enveloppe>
           <ligne>02</ligne>
        </Enveloppe>
        <Individu>
            <Demande>
                <Personne>
                    <Noms>
                        <NomF>foot</NomF>
    		    <NomU>ball</NomU>
                    </Noms>
                    <Prenoms>
                        <Prenom>AAAA</Prenom>
    		    <Prenom>BBBB</Prenom>
                        <Prenom>CCC</Prenom>
                    </Prenoms>
                    <Naissance>
                        <Date>2012-06-20</Date>
                        <Lieu>
                            <Localite code="75000"/>
    						<Pays>France</Pays>
                        </Lieu>
                    </Naissance>
                    <Sexe>Homme</Sexe>
                </Personne>
            </Demande>
        </Individu>
        <Individu>
            <Demande>
                <Personne>
                    <Noms>
                        <NomF>Nom1</NomF>
    		    <NomU>Nom2</NomU>
                    </Noms>
                    <Prenoms>
                        <Prenom>ZZZZZ</Prenom>
    		    <Prenom>UUUUU</Prenom>
                    </Prenoms>
                    <Naissance>
                        <Date>2012-06-20</Date>
                        <Lieu>
                            <Localite code="75000"/>
    			<Pays>France</Pays>
                        </Lieu>
                    </Naissance>
                    <Sexe>Homme</Sexe>
                </Personne>
            </Demande>
        </Individu>
    </Lettre>
    et je cherche a modifier les balise <Prenom> par <Prenom1><Prenom2><Prenom3>

    merci de ton aide

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 106
    Points : 31
    Points
    31
    Par défaut
    je cherche a le modifier en ce fichier :
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    <?xml version="1.0" encoding="UTF-8"?>
    <Lettre>
        <Enveloppe>
           <ligne>02</ligne>
        </Enveloppe>
        <Individu>
            <Demande>
                <Personne>
                    <Noms>
                        <NomF>foot</NomF>
    		    <NomU>ball</NomU>
                    </Noms>
                    <Prenoms>
                        <Prenom1>AAAA</Prenom1>
    		    <Prenom2>BBBB</Prenom2>
                        <Prenom3>CCC</Prenom3>
                    </Prenoms>
                    <Naissance>
                        <Date>2012-06-20</Date>
                        <Lieu>
                            <Localite code="75000"/>
    			<Pays>France</Pays>
                        </Lieu>
                    </Naissance>
                    <Sexe>Homme</Sexe>
                </Personne>
            </Demande>
        </Individu>
        <Individu>
            <Demande>
                <Personne>
                    <Noms>
                        <NomF>Nom1</NomF>
    		    <NomU>Nom2</NomU>
                    </Noms>
                    <Prenoms>
                        <Prenom1>ZZZZZ</Prenom1>
    		    <Prenom2>UUUUU</Prenom2>
                    </Prenoms>
                    <Naissance>
                        <Date>2012-06-20</Date>
                        <Lieu>
                            <Localite code="75000"/>
    			<Pays>France</Pays>
                        </Lieu>
                    </Naissance>
                    <Sexe>Homme</Sexe>
                </Personne>
            </Demande>
        </Individu>
    </Lettre>

  11. #11
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Je t'ai fait un programme simple très optimisé au cas où tes fichiers XML seraient gros.
    Le principe est le suivant : Je ne parcours que la balise <Prenom> (chunk by chunk) => rapidité, mémoire utilisée de façon pertinente. Ensuite, sachant que dans la balise <Prenoms>, je n'ai que des balises <Prenom>, je vais juste récupérer le niveau de position de ma balise via la méthode pos du module et je renomme ma balise.

    XML::Twig est un module très très puissant car il possède énormément de méthodes permettant de jouer avec ses fichiers XML. Il faut juste être patient pour bien décortiquer la documentation.

    Fichier XML d'entrée :
    Code xml : 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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    <?xml version="1.0" encoding="UTF-8"?>
    <Lettre>
      <Enveloppe>
        <ligne>02</ligne>
      </Enveloppe>
      <Individu>
        <Demande>
          <Personne>
            <Noms>
              <NomF>foot</NomF>
              <NomU>ball</NomU>
            </Noms>
            <Prenoms>
              <Prenom>AAAA</Prenom>
              <Prenom>BBBB</Prenom>
              <Prenom>CCC</Prenom>
            </Prenoms>
            <Naissance>
              <Date>2012-06-20</Date>
              <Lieu>
                <Localite code="75000"/>
                <Pays>France</Pays>
              </Lieu>
            </Naissance>
            <Sexe>Homme</Sexe>
          </Personne>
        </Demande>
      </Individu>
      <Individu>
        <Demande>
          <Personne>
            <Noms>
              <NomF>Nom1</NomF>
              <NomU>Nom2</NomU>
            </Noms>
            <Prenoms>
              <Prenom>ZZZZZ</Prenom>
              <Prenom>UUUUU</Prenom>
              <Prenom>aaa</Prenom>
            </Prenoms>
            <Naissance>
              <Date>2012-06-20</Date>
              <Lieu>
                <Localite code="75000"/>
                <Pays>France</Pays>
              </Lieu>
            </Naissance>
            <Sexe>Homme</Sexe>
          </Personne>
        </Demande>
      </Individu>
    </Lettre>

    Code Perl :
    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
    28
    #!/usr/bin/perl
    use strict;
    use warnings;
    use XML::Twig;
     
    my $fichier_xml = 'test.xml';
    my $output_xml  = 'output.xml';
     
    my $twig = XML::Twig->new(   
        twig_handlers => {  
          Prenom    => \&gestion_dun_prenom, 
        },
        pretty_print => 'indented',               
    );
    $twig->parsefile($fichier_xml);
     
     
    open( my $fh, '>', $output_xml) or die "Impossible de créer le fichier XML $output_xml : $!";
    $twig->print($fh); 
    close $fh;
     
    sub gestion_dun_prenom {
      my ($twig, $twig_prenom) = @_;
     
      # On renomme la balise en récuprant son niveau de position
      $twig_prenom->set_tag( $twig_prenom->name . $twig_prenom->pos ); 
      return;
    }
    Fichier de sorti :
    Code xml : 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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    <?xml version="1.0" encoding="UTF-8"?>
    <Lettre>
      <Enveloppe>
        <ligne>02</ligne>
      </Enveloppe>
      <Individu>
        <Demande>
          <Personne>
            <Noms>
              <NomF>foot</NomF>
              <NomU>ball</NomU>
            </Noms>
            <Prenoms>
              <Prenom1>AAAA</Prenom1>
              <Prenom2>BBBB</Prenom2>
              <Prenom3>CCC</Prenom3>
            </Prenoms>
            <Naissance>
              <Date>2012-06-20</Date>
              <Lieu>
                <Localite code="75000"/>
                <Pays>France</Pays>
              </Lieu>
            </Naissance>
            <Sexe>Homme</Sexe>
          </Personne>
        </Demande>
      </Individu>
      <Individu>
        <Demande>
          <Personne>
            <Noms>
              <NomF>Nom1</NomF>
              <NomU>Nom2</NomU>
            </Noms>
            <Prenoms>
              <Prenom1>ZZZZZ</Prenom1>
              <Prenom2>UUUUU</Prenom2>
              <Prenom3>aaa</Prenom3>
            </Prenoms>
            <Naissance>
              <Date>2012-06-20</Date>
              <Lieu>
                <Localite code="75000"/>
                <Pays>France</Pays>
              </Lieu>
            </Naissance>
            <Sexe>Homme</Sexe>
          </Personne>
        </Demande>
      </Individu>
    </Lettre>

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 106
    Points : 31
    Points
    31
    Par défaut
    ca marche super
    merci djibril

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

Discussions similaires

  1. [XML:Twig et ODF::lpOD] Conversion XML en ODT
    Par djibril dans le forum Modules
    Réponses: 41
    Dernier message: 02/04/2011, 13h57
  2. changer le nom des balises dans un XML
    Par ellgafsi dans le forum Modules
    Réponses: 13
    Dernier message: 25/03/2009, 15h10
  3. [XML::Twig] Commentaires dans le fichier XML réécrit
    Par knarf87 dans le forum Modules
    Réponses: 2
    Dernier message: 07/05/2008, 09h24
  4. [XML][XSL]probleme html dans balise xml
    Par chateau64 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 02/12/2005, 11h42
  5. [XML] Accent dans les noms de balises
    Par virgul dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 09/03/2005, 13h42

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