Henri a écrit 153 commentaires

  • [^] # Re: loop

    Posté par  . En réponse au message Parsage sur plusieur fichier. Évalué à 1.

    j'ai deja fouille mais je n'arrive pas a trouver des information concernant le saut dans un tableau

  • [^] # Re: loop

    Posté par  . En réponse au message Parsage sur plusieur fichier. Évalué à 1.

    j'ai comme l'impression quenous ne nous comprenons pas du tout, voila tout mon code :

    use strict;
    use warnings;
    use XML::Twig;
    
    my $file_0 = $ARGV[0] or die 'No file1'; 
    my @files = @ARGV or die 'No files';
    
    my $FileResult = 'result.txt';
    open( my $FhResult, '>', $FileResult )or die ("Unable to open file `{mathjax} FileResult\n`!");
    
    
    my $twig1= XML::Twig->new(    
            twig_handlers => {     
                    'Parameter' => sub { 
    
    
                            my $attr_name = $_->{'att'}->{'name'} // 'fault'; 
                            print $FhResult $attr_name . ",";
                    },
            },
    );
    
    print $FhResult( (split('_', $file_0,2))[0] . ',' ); 
    $twig1->parsefile($file_0);
    
    
    for my $file (@files) {
        my $twig1 = XML::Twig->new(
            twig_handlers => {
                'Parameter' => sub {
                    my $attr_value = $_->{'att'}->{'value'} // 'fault';
                    print $FhResult $attr_value . ",";
                },
            },
        );

    print $FhResult ( split( '_', "\n$file", 2 ) )[0] . ',';
    $twig1->parsefile($file);
    }

    voila ce qu'il me donne a la sorti quand j'entre 4 fichiers a savoir:
    1- les attributs(name) fichier 0,
    2- les attributs(value) fichier 0,<-- ceci je n'aimerai pas l'avoir
    3- les attributs(value) fichier 1,
    4- les attributs(value) fichier 2,
    5- les attributs(value) fichier 4,

    default,primary,secondary,copy_directory,forced_copy_flag,always_allow_dump,type_of_dump,full_memo
    default,/dev/lg_dumplv,/dev/sysdumpnull,/var/adm/ras,1,0,fw-assisted,disallow,<-- ceci je n'aimerai pas l'avoir
    d100spuptl25e0,/dev/lg_dumplv,/dev/sysdumpnull,/var/adm/ras,1,1,fault,disallow,
    doc1,/dev/lg_dumplv,/dev/sysdumpnull,/var/adm/ras,1,0,fw-assisted,disallow,
    doc2,/dev/lg_dumplv,/dev/sysdumpnull,/var/adm/ras,1,1,fw-assisted,disallow,

    si cela apparait c'est parcequ'il traite le fichier Nr.0 2 fois une fois pour la sorti des attributs name et une seconde fois pour la sorti des attribut value alors que je ne veus pas cela pour la seconde fois et le problemese situe a la declaration de @file=@ARGV je ne sais pas comment l'empeche a ce qu'il ne me traite pas le fichier Nr.0 une fois de plus

  • [^] # Re: loop

    Posté par  . En réponse au message Parsage sur plusieur fichier. Évalué à 1.

    Salut Neoxje vais te dire que tu es loin de savoir ce que tu racontes, tu tiens des propos donc tu ne peu pas prouver et je ne suis nom plus quelqu'un qui n'aime pas qu'on lui fasse des remarques,
    Comme tu pretant erte un si bon progmmeur tu aurais du ecrire ARGV[0] car la plupart de compiler et interpreteur compte commencant par 0 et non par 1. et c'est donc a ce niveau donc j'ai un probleme je ne sais pas comment ecrire mon code de maniere a qu'il commence a compte á 1 pour me donner les attributs value. car mon code devrait etre capable de traiter un grand nombre de fichier

  • [^] # Re: loop

    Posté par  . En réponse au message Parsage sur plusieur fichier. Évalué à 1.

    Salut Neox je crois qu'on ne se comprend et meme avec cette petite erreur sur mon code ca fonctionait. mon probleme est qu'il me donne les attibuts value des fichiers que j'entre
    car egal ne nombre de Fichiers que j'entre il me retournera que les attributs value mais
    j'aimerai que pour le fichiers Nr.0 qu'il me retourne les Attributs name et le reste de fichiers les attributs value

    use strict;
    use warnings;
    use XML::Twig;
    
    my @files = @ARGV or die 'No files';
    
    my $FileResult = 'result.txt';
    
    open( my $FhResult, '>', $FileResult )
      or die "Unable to open file $FileResult\n$!";
    
    for my $file (@files) {
        my $twig1 = XML::Twig->new(
            twig_handlers => {
                'Parameter' => sub {
                    my $attr_value = $_->{'att'}->{'value'} || 'fault';
                    print $FhResult $attr_value . ",";
                },
            },
        );
    
        print $FhResult ( split( '_', $file, 2 ) )[0] . ',';
    
        $twig1->parsefile($file);
    }
    
    close $FhResult;
  • [^] # Re: loop

    Posté par  . En réponse au message Parsage sur plusieur fichier. Évalué à 1.

    le code etait bien , il y avait une erreur sur mon fichier XML, je voulais maintenant savoir si quelqu'un peut aider a modifier ce code de tel maniere que lors de l'execution il me retourne les attributs name du premier fichier et en ce qui concerne le reste de fichiers les attributs value , je doit souligne ici que le code plus haut me retourne les attributs value des fichiers.

  • [^] # Re: loop

    Posté par  . En réponse au message Parsage sur plusieur fichier. Évalué à 1.

    Nicolas c'est mon Fichier XML qui avait un probleme

  • [^] # Re: loop

    Posté par  . En réponse au message Parsage sur plusieur fichier. Évalué à 1.

    maintenant j'ai essaye d#arranger mais juste quand il veut deja sortir de la boucle il me signale une erreur a ce niveau
    $twig1->parsefile($file);

  • [^] # Re: loop

    Posté par  . En réponse au message Parsage sur plusieur fichier. Évalué à 1. Dernière modification le 14 avril 2015 à 17:31.

    regarde ce que je possede ilme signale une erreur a la ligne 12(a partir de for ) je ne comprend pas cette erreur

    use strict;
    use warnings;
    use XML::Twig;
    
    my @files = @ARGV or die 'No files';
    
    my $FileResult = 'result.txt';
    
    open( my $FhResult, '>', $FileResult )
      or die "Unable to open file $FileResult\n$!";
    
    for my $file (@files) {
        my $twig1 = XML::Twig->new(
            twig_handlers => {
                'Parameter' => sub {
                    my $attr_value = $_->{'att'}->{'value'} || 'fault';
                    print $FhResult $attr_value . ",";
                },
            },
        );
    
        print $FhResult ( split( '_', $file, 2 ) )[0] . ',';
    
        $twig1->parsefile($file);
    }
    
    close $FhResult;

    voila l'erreur que cela me notifie

    mismatched tag at line 12, column 5, byte 629 at C:/strawberry/perl/site/lib/XML
    /Parser.pm line 187.
     at new.pl line 24.
     at new.pl line 24.
    
    C:\Users\IBM_ADMIN\Documents>
  • [^] # Re: loop

    Posté par  . En réponse au message Parsage sur plusieur fichier. Évalué à 1. Dernière modification le 14 avril 2015 à 13:35.

    je sais pas si tu peus ecrire cette boucle ici , parceque la je ne m'en sort pas
    j'ai ecris

        my $file = $ARGV[1],$ARGV[2],$ARGV[3],... || die 'No file';    
        for ($i = $ARGV[i], $i <= 3, $i++){
        my $twig2= XML::Twig->new(    
            twig_handlers => { 
                    'Parameter' => sub { 
    
                            my $attr_value = $_->{'att'}->{'value'} || 'fault';  
                            print $FhResult $attr_value . ",";
                    },
            },
    );
    
    print $FhResult( (split('_', "\n$file",2))[0] . ',' ); 
    $twig2->parsefile($file);

    cela ne m'apporte rien ma faute se situe au niveau de mon for-loop car la j'ai deja cherche comment on effectue un for-loop avec plusieurs Arguments et aussi la premiere ligne de mon code a savoir

    my $file = $ARGV[1],$ARGV[2],$ARGV[3],... || die 'No file';    
    
  • [^] # Re: loop

    Posté par  . En réponse au message Parsage sur plusieur fichier. Évalué à 1.

    je vais essaye de voir cela demain, merci du cheminement

  • [^] # Re: loop

    Posté par  . En réponse au message Parsage sur plusieur fichier. Évalué à 1.

    Neox ca ne marche pas car la loop ne fonctione pas

  • [^] # Re: loop

    Posté par  . En réponse au message Parsage sur plusieur fichier. Évalué à 1.

    j'aimerai que le fichier de sortie contient le resulat de plusieur XML-fichier
    c'est ce cette boucle for qui me menace actuellec'est a dire
    mes fichier sont quelque part sauvegarde sur mon disque C:
    1.xml. 2.xml, 3.xml, 4.xml,…, n.xml ainsi que mon parser.pl
    la quand je vais dans perl commandline je tape
    perl parser.pl 1.xml. 2.xml, 3.xml, 4.xml,…, n.xml
    et le resultat sur un fichier result.txt

  • [^] # Re: loop

    Posté par  . En réponse au message Parsage sur plusieur fichier. Évalué à 1.

    Salut Mathieu
    quand j'appele mon script je le fait de la maniere suivante
    perl parser.pl default_sysdumpdev_150319.xml

    maintenant j'aimerai un bien insere une loop de maniere a ce que je puis appeler 1, 2, 3,…, n fichiers. c'est la que ce situe mon probleme

  • [^] # Re: loop

    Posté par  . En réponse au message Parsage sur plusieur fichier. Évalué à -2.

    pourrais tu un peu etre precis avec ta Loop

  • [^] # Re: po

    Posté par  . En réponse au message XML-Parser. Évalué à 2. Dernière modification le 13 avril 2015 à 21:59.

    Salut Nicola ,

    juste pour te dire que j'ai reussi voila le code

    my $twig2= XML::Twig->new(    
        twig_handlers => { 
            'Parameter' => sub { 
                # use 'fault' if name is not defined; Operator '//' is available since perl 5.10.1
                my $attr_name = $_->{'att'}->{'value'} // 'fault';
                print $FhResult $attr_name . ",";
            },
        },
    );
  • [^] # Re: po

    Posté par  . En réponse au message XML-Parser. Évalué à 1.

    persone ici ne peut m'aider ? comme je l'ai dis par ailleur j'ai le code plus haut et j'aimerai losrque dans mon datei un parametre ne possede pas d#attribut value , qu'il me retourne a ce niveau "fault"

  • [^] # Re: po

    Posté par  . En réponse au message XML-Parser. Évalué à 1. Dernière modification le 09 avril 2015 à 21:12.

    salut j'ai ecrit le code de la maniere suivante twig1 qui nous permet le parser du fichier1 et retourne juste les Atributs name et twig2 qui permet le parser du fichier2 et retourne jsute le values, maintenant j'aimerai que dans le twig2 on ecrive une Loop qui permettra d'ecrire "fault" dans le cas ou il ne trouverai pas de corespondance value avec le Fichier2 a defaut il me donne la value correspondante.

    use strict;
    use warnings;
    use XML::Twig;   
    
    my $FileResult = 'result.txt';
    open( my $FhResult, '>', $FileResult ) or die("Unable to open file $FileResult\n$!");
    
    my $twig1= XML::Twig->new(    
                   twig_handlers => { 'Parameter' => sub { $, = ",";  
                                                          print $FhResult $_->{'att'}->{'name'}. $, 
                                                          }
                                    }
                   );
    
    print $FhResult( (split('_', "d100spuptl25e0_datei1.xml",2))[0] . ',' ); 
    $twig1->parsefile("d100spuptl25e0_datei1.xml");
    
    my $twig2= XML::Twig->new(
    
                   twig_handlers => { 'Parameter' => sub { $, = ",";
                                                          print $FhResult $_->{'att'}->{'value'} . $,
                                                          }
                                    }
                   );
    
    
    print $FhResult( (split('_', "\ndefault_datei2.xml",2))[0] . ',' );
    $twig2->parsefile('default_datei2.xml');
  • [^] # Re: po

    Posté par  . En réponse au message XML-Parser. Évalué à 1. Dernière modification le 09 avril 2015 à 21:10.

    voici mon fichier de reference il est le meme que celui plus haut, delui j'en ai besoin que des names et le parser sur l# attribut nom nous retourne: prim, second, copy, forced, always, Type, memory

        <?xml version="1.0" encoding="UTF-8"?>
          <Profile origin="get" version="2.1" date="2013.05.20">
                             <Catalog id="sys" version="2.1">
                              <Parameter name="prim" value="2"/>
                               <Parameter name="second" value="3"/>
                               <Parameter name="copy" value="4"/>
                               <Parameter name="force" value="1"/>
                               <Parameter name="always" value="0"/>
                              <Parameter name="type" value="5" Type="False"/>
                              <Parameter name="memory" value="allow"/>
                             </Catalog>
                            </profile>

    voici un fichier quelconque il possede par example un parametre de moins, plus presicement le Parameter name="type" value="5" Type="False" que le fichier de reference

                 <?xml version="1.0" encoding="UTF-8"?>
              <Profile origin="get" version="2.0.1" date="2015-03-19T10:38:58Z">
               <Catalog id="sysdumpdevParam" version="2.1">
               <Parameter name="prim" value="/dev/lg_dumplv"/>
               <Parameter name="second" value="/dev/sysdumpnull"/>
               <Parameter name="copy" value="/var/adm/ras"/>
               <Parameter name="forced" value="1"/>
               <Parameter name="always" value="0"/>
               <Parameter name="memory" value="disallow"/>
               </Catalog>
              </Profile>

    maintenant il doit me retourner en comparaisons avec le fichier de reference la suivante:

    prim,         second,              copy,         forced,    always,    Type,    memory    
     /dev/lg_dumplv,   /dev/sysdumpnull,   /var/adm/ras,     1,         0,      fault ,  disallow

    ca veut dire que dans le cas il ne trouve pas correspondance (value) il ecrit a ce lieu fault, a defaut il retourne ce qui ci trouve comme value.

    Merci bien de votre aide, s'il ya quelque chose a demande , pardon n'hesite pas.

  • [^] # Re: po

    Posté par  . En réponse au message XML-Parser. Évalué à 1.

    Salut Nicolas j'aimerai que tu me viennes une fois de plus en aide:
    j'aimerai change le code de maniere a ce qu'il me retourne quelque chose d'autre , auf fait j'execute mon code sur un Premier fichier (fichier de reference) qui nous retourne juste les names prim, second,copy,force,always, type, memory ensuite j'execute parallement sur un second fichier qui examine chaque fois si a chaque name correspond une value et me le retourne dans un exemple suivant 2, 3, 4, 1, 0, 5, allow dans le cas ou il ya un name qui 'a pas de correspondance value il doit me retourne dans le champs correspondant fault voici un apercu 2, fault, 3, 4, 1, fault, 0.

  • [^] # Re: po

    Posté par  . En réponse au message XML-Parser. Évalué à 1.

    my ($filename) = shift @ARGV;    
     open (my $fh, '<', $filename) or die "file '$filename' not found";        
    ```ceci sont les deux ligne que je pense bien qu'il me faut insere dans mon code mais depuis deja pratiquement 2 Jours je n'arrive pas et je sais que la command d'appelle est la suivante :
        perl parser.pl doc1.xml       
    
    parser.pl est le nom sou lequel j'ai sauvegarde mon code et doc celui sous lequel j'ai sauvegarde mon Fichier. quelqu'un peut il me dire comment l'insere dans mon code.
    
    Merci
    
  • [^] # Re: po

    Posté par  . En réponse au message XML-Parser. Évalué à 1.

    Merci bien ca fonctione. j'avais encore une question surtou faut pas dire que celui si il pose trop de question. au fait si vous voyez mon code Les fichiers on ete declarer, existe il un moyen que je puisse sur l'editor de perl-stwaberry d'appele mes Fichiers, sans toute fois devoir les declare dans mon code , si je demande c'est parceque j'ai trop de fichier et je n'aimerai pas tous les ecrire dans mon code mais juste pouvoir les a partir der l'editor de Perl-Strawberry les appeles.
    Merci

  • [^] # Re: po

    Posté par  . En réponse au message XML-Parser. Évalué à 1.

    merci bien j'en ai fait la remarque

  • [^] # Re: po

    Posté par  . En réponse au message XML-Parser. Évalué à 1.

    voici un code permetant de separe les chaines de caractere mes comment l'inserer dans mon code plus haut de maniere a se qu'il me retourne une partie du nom sous lequel mon fichier a ete sauvegarde et ainsi que les names et les values.

    my $data = 'd100spuptl25e0_sysdumpdev.txt';
    (@part) = split(/_/,$data,2);
    print $part[0];

  • [^] # Re: po

    Posté par  . En réponse au message XML-Parser. Évalué à 1. Dernière modification le 03 avril 2015 à 14:07.

    j'espere que cest ce que vous vouliez dir
    print $FhResult 'd100spuptl25e0_sysdumpdev.txt,' ;

    $twig->parsefile('d100spuptl25e0_sysdumpdev.txt');

    il me produit certe un resultat mais avec une erreur elle est la suivante:

    C:\Users\IBM_ADMIN\Documents>perl new2.pl
    mismatched tag at line 12, column 5, byte 626 at C:/strawberry/perl/site/lib/XML
    /Parser.pm line 187.
    at new2.pl line 17.
    at new2.pl line 17.

  • [^] # Re: po

    Posté par  . En réponse au message XML-Parser. Évalué à 1.

    ca fonctione merci bien , c'est tres gentil de votre part, et si je voulais qu'il me retourne aussi le nom du fichier , pourrai je ajoute. je dis dans le fait que je voudrais qu'il me retourne comme suit, sachant le fichier est sauvegarder sous le nom compute_sys.xml. serait tres gentil de votre part. Merci

    compute,prim,2,second,3,copy,4,force,1,always,0,type,5,memory,allow,