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

Langage Perl Discussion :

Comment peut on enregistrer des valeurs dans une table de hachage avec perl


Sujet :

Langage Perl

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2013
    Messages : 33
    Points : 17
    Points
    17
    Par défaut Comment peut on enregistrer des valeurs dans une table de hachage avec perl
    Bonjour,

    je veux construire une table de hachage à partie d'un fichier data.xml donnée ci dessous avec perl.

    Sous cette forme :
    {SENDER =>Name} =>{Data Element=>Name
    =>Type
    =>boolean}


    une partie de fichier data.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     <SENDER UUID="DCE:d393ee1a-bed4-4144-998f-119e386b5772">
              <SHORT-NAME>Sender1_API</SHORT-NAME>
              <LONG-NAME>Sender12_API</LONG-NAME>
              <DATA-ELEMENTS>
                <DATA-ELEMENT-PROTOTYPE UUID="DCE:d0264a73-2758-4797-a4f4-73754b860a49">
                  <SHORT-NAME>Sender1</SHORT-NAME>
                  <LONG-NAME>Sender12</LONG-NAME>
                  <TYPE-TREF>UInt8</TYPE-TREF>
                  <IS-QUEUED>false</IS-QUEUED>
                </DATA-ELEMENT-PROTOTYPE>
              </DATA-ELEMENTS>
       </SENDER>


    et je veux un fichier output.txt comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    short name:Sender1_API
    Long name :Sender12_API
    Data element name :Sender1
    Type: UInt8
    boolean: false
    Je serai reconnaissante pour votre aide

  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 le faire toi-même manuellement, mais il est sans doute très largement préférable d'utiliser un module CPAN XML tout fait, comme par exemple XML::Simple.

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2013
    Messages : 33
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par Lolo78 Voir le message
    Tu peux le faire toi-même manuellement, mais il est sans doute très largement préférable d'utiliser un module CPAN XML tout fait, comme par exemple XML::Simple.
    Merci pour ta réponse.
    Mais ceci est une partie d'un "huge" fichier xml de cette forme.Donc ,je dois travailler avec le module xml::twig.

    Mais le problème c'est que je c pas comment enregistrer ces données dans une table de hachage multi-dimension et puis accéder à ces données.

  4. #4
    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
    Ah, OK, mal compris la question.

    Exemple de table de hachage multi-dimension:

    $SENDER{name}{element}{type} = "boolean";

    ou un autre exemple peut-être plus explicite:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    my %mois;
    $mois{janvier}{numero} = 1;
    $mois{janvier}{abbreviation}="Jan";
    $mois{janvier}{saison}= "hiver";
    $mois{fevrier}{numero} = 2;
    $mois{fevrier}{abbreviation}="Fev";
    $mois{fevrier}{saison}= "hiver";
    Ce qui me donne un hash de (références sur des) hashes ayant la structure suivante (command x sous le debugger):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     x %mois
    0  'fevrier'
    1  HASH(0x20455630)
       'abbreviation' => 'Fev'
       'numero' => 2
       'saison' => 'hiver'
    2  'janvier'
    3  HASH(0x20080860)
       'abbreviation' => 'Jan'
       'numero' => 1
       'saison' => 'hiver'

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2013
    Messages : 33
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par Lolo78 Voir le message
    Ah, OK, mal compris la question.

    Exemple de table de hachage multi-dimension:

    $SENDER{name}{element}{type} = "boolean";

    ou un autre exemple peut-être plus explicite:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    my %mois;
    $mois{janvier}{numero} = 1;
    $mois{janvier}{abbreviation}="Jan";
    $mois{janvier}{saison}= "hiver";
    $mois{fevrier}{numero} = 2;
    $mois{fevrier}{abbreviation}="Fev";
    $mois{fevrier}{saison}= "hiver";
    Ce qui me donne un hash de (références sur des) hashes ayant la structure suivante (command x sous le debugger):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     x %mois
    0  'fevrier'
    1  HASH(0x20455630)
       'abbreviation' => 'Fev'
       'numero' => 2
       'saison' => 'hiver'
    2  'janvier'
    3  HASH(0x20080860)
       'abbreviation' => 'Jan'
       'numero' => 1
       'saison' => 'hiver'

    Donc je vais voir ça et je donnerai le résultat

  6. #6
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2013
    Messages : 33
    Points : 17
    Points
    17
    Par défaut Comment je peux récupérer des données différentes de balise xml?
    Bonjour ,
    volia mon fichier xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <WRITTEN-VARIABLE-REFS>
                    <WRITTEN-VARIABLE-REF>AdvCord_1</WRITTEN-VARIABLE-REF>
                    <WRITTEN-VARIABLE-REF>AdvCord_2</WRITTEN-VARIABLE-REF>
                    <WRITTEN-VARIABLE-REF>AdvCord_3</WRITTEN-VARIABLE-REF>
                    <WRITTEN-VARIABLE-REF>AdvCord_4</WRITTEN-VARIABLE-REF>
                    <WRITTEN-VARIABLE-REF>AdvCord_5</WRITTEN-VARIABLE-REF>
                    <WRITTEN-VARIABLE-REF>AdvCord_6</WRITTEN-VARIABLE-REF>
              </WRITTEN-VARIABLE-REFS>


    et je veux récupérer le output.txt sous cette forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    AdvCord_1
    AdvCord_2
    AdvCord_3
    AdvCord_4
    AdvCord_5
    AdvCord_6

    si j'utilise cette fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    sub c
    {
    	foreach my $search($root->findnodes("//WRITTEN-VARIABLE-REFS"))
    	{	
     
    			my $write=$search->first_child_text('WRITTEN-VARIABLE-REF');
    			print "$write \n";
    	}
     
     
    }

    j'obtiens juste le premier élément : AdvCord_1

    Donc comment faire pour obtenir toute la liste ?

  7. #7
    Membre éprouvé Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Points : 1 050
    Points
    1 050
    Par défaut
    je ne connais pas bien le module xml::twig, mais en fouillant la doc, tu peux trouver la méthode next_sibling_text qui doit te permettre de parcourir les autres éléments de la liste

    Hope this helps
    Nous les geeks, c'est pas qu'on a une case en moins, c'est juste qu'on compte à partir de zéro.
    Plus les choses changent, plus elles restent les mêmes

  8. #8
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2013
    Messages : 33
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par Gardyen Voir le message
    je ne connais pas bien le module xml::twig, mais en fouillant la doc, tu peux trouver la méthode next_sibling_text qui doit te permettre de parcourir les autres éléments de la liste

    Hope this helps
    j'ai essayé avec next_sibling_text ..rien n'est aparue
    j'ai essayé encore avec next_elt_text elle me renvoie toujours le premier élément

    alors que quand j'utilise children_text ...elle me renvoie un tableau comme ça :
    AdvCord_1AdvCord_2AdvCord_3AdvCord_4AdvCord_5AdvCord_6

    Donc comment je fais pour les ordonner ?

  9. #9
    Membre éprouvé Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Points : 1 050
    Points
    1 050
    Par défaut
    c'est indiqué dans la doc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    children_text ($optional_condition)
     
        In array context, reeturns an array containing the text of children of the element (optionally which matches $optional_condition)
     
        In scalar context, returns the concatenation of the text of children of the element
    ça te retournera tous les textes concaténés si tu es dans un contexte scalaire, ou une liste avec les textes (ce que tu cherches) dans un contexte de liste

    donc récupères les valeurs dans une liste, quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my @liste = $search->children_text('WRITTEN-VARIABLE-REF');
    toujours lire la doc attentivement quand tu utilises un module...
    Nous les geeks, c'est pas qu'on a une case en moins, c'est juste qu'on compte à partir de zéro.
    Plus les choses changent, plus elles restent les mêmes

  10. #10
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2013
    Messages : 33
    Points : 17
    Points
    17
    Par défaut
    wé c exactement ça .

    Bon je l'ai utilisé autrement pour que j'obtiens ce que je veux (donnée séparée) quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    foreach my $child( $search->children('WRITTEN-VARIABLE-REF') ) 
    			{
    				my $write =$child->text;
                                     print "$write\n";
                              }

    Donc j'obtiens bien évidement ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    AdvCord_1
    AdvCord_2
    AdvCord_3
    AdvCord_4
    AdvCord_5
    AdvCord_6

    donc ce que je veux

    Merci pour ton aide

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

Discussions similaires

  1. Enregistrer des valeurs dans une base de donnée SQL
    Par MoTaWer dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 11/05/2011, 14h16
  2. [MySQL] Php, je ne comprends pas comment faire pour introduire des données dans une table
    Par Liondd dans le forum PHP & Base de données
    Réponses: 23
    Dernier message: 14/12/2006, 12h53
  3. [MySQL] Liste deroulante et inscription des valeurs dans une table
    Par stefon dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 24/11/2006, 15h31
  4. enregistrer des variables dans une table via requete sql
    Par Echizen1 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 15/09/2006, 15h15
  5. Macro - Ecrire des valeurs dans une table
    Par gojaru dans le forum Access
    Réponses: 2
    Dernier message: 17/08/2006, 13h54

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