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

Programmation et administration système Perl Discussion :

[DEBUTANT] Questions sur des comparaisons xml-csv


Sujet :

Programmation et administration système Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 25
    Par défaut [DEBUTANT] Questions sur des comparaisons xml-csv
    Bonjour à tous!
    Je me suis récemment mis au Perl dans el cadre d'un stage, mais je rencontre quelques problèmes à mesure que je réfléchis à comment coder...
    Voilà mon problème j'ai un fichier xls à comparer avec un fichier csv.
    Je pensais mettre le contenu de ces fichiers dans des tableaux puis les traiter par expressions régulières, mais certains sites disent qu'il s'agit là d'une mauvaise pratique, et même après avoir lu plusieurs de vos cours, je ne suis toujours pas certain de la marche à suivre... Quel serait donc la meilleure manière de procéder?
    J'ai vu des parsers de xml à foison sur le CPAN et ne sais pas vraiment lequel utiliser, sachant que je n'y ai jamais touché et que mon fichier xml ne ressemble pas à ce que je connais, niveau "architecture" (faute d'un meilleur terme).
    Que me conseilleriez-vous, vous qui êtes expérimentés?
    Merci d'avance!

  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
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par LeNoobEnPerl Voir le message
    ... sachant que ... mon fichier xml ne ressemble pas à ce que je connais, niveau "architecture" (faute d'un meilleur terme).
    Bonjour,

    La question, au vu de ta demande, est la suivante: est-ce que c'est du vrai XML valide, ou non? Si ce n'est pas du XML valide, alors les parsers XML existants seront sans doute incapables d'en extraire les données.

    Pourrais-tu fournir un échantillon de tes données en entrée, afin que l'on puisse essayer de se faire une idée.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 25
    Par défaut
    Bien sûr, il s'agit de cette forme-ci :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <ITEM attribut1="valeur1" attribut2="valeur2">
    	<VERSION numeroVersion="numéro">
    		<CONCRETISATIONDELAVERSION numerodelaversion="1"/>
    	</VERSION>
    	<ITEMQUICOMPOSELEPREMIER attribut1="valeur1" attribut2="valeur2">
    		<VERSION numeroVersion="numéro">
    			<CONCRETISATIONDELAVERSION numerodelaversion="1"/>
    			</ITEMQUICOMPOSELEPREMIER>

    En gros, les items sont composés de 1 ou + versions (chaque version étant concrétisée), ainsi que de 0 ou plus items (des pièces/composants du coups) qui le composent.
    Or je dois comparer ces items dans le xml avec un fichier csv pour vérifier que les 2 sont bons et qu'il n'y aie pas d'erreurs dans la base dont le xml est extrait.

    Je sais pas si c'est très clair...
    J'aimerais pouvoir être un peu plus précis sur la structure du xml, mais vu la politique de sécurité super stricte de mon employeur, je ne pense pas en avoir le droit...

    PS : J'ai un peu foiré l'inclusion de mon code, je sais pas trop comment ça marche

  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
    Billets dans le blog
    1
    Par défaut
    Bon, je ne suis vraiment pas expérimenté dans l'utilisation du XML, mais, à vue de nez, ça ressemble à du XML correct.

    Donc, il est effectivement recommandé d'utiliser un module spécialisé comme par exemple les modules XML::Twig ou XML::LibXML, voire peut-être XML:: Parser.

    Je te conseille ce tutoriel de l'ami Djibril: http://djibril.developpez.com/tutoriels/perl/perl-xml/ pour en savoir plus.

    Avec, toutefois, une toute petite réserve: Djibril mentionne en passant XML::Simple parmi les nombreux modules utilisables, je pense qu'il y a consensus dans la communauté que ce module n'est plus guère recommandé.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 25
    Par défaut
    Justement, j'avais lu ce cours et je me demandais ce qui rend twig si "facile" à utiliser. J'ai lu la doc sur le CPAN et ça ne me semble pas très facile.

    Et quand on parse (avec twig, parser ou libxml), est-ce possible de mettre chaque ligne dans une case d'un tableau pour ensuite les traiter par expressions régulières? J'avais lu quelque part que beaucoup de programmeurs considèrent cela comme une mauvaise pratique, mais étant donné sa simplicité, je ne comprends pas pourquoi.

    Mon code avec XML::Simple :

    Code perl : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    my adresseXML;
    do
    {
    <div style="margin-left:40px">print "Etape 1 : Saisissez l'adresse du fichier XML\n";</div><div style="margin-left:40px">chomp($adresseXML = <STDIN>); #on récupère ici l'adresse du fichier XML</div>} while (! $adresseXML);
    my $parser = XML::Simple->new( NoAttr=>1, RootName=>'data' );
    my $handlerXML = $parser->XMLin($adresseXML);
    print Dumper $handlerXML;

    Cela par exemple marcherait-il pour afficher la structure du xml? Sur le cours de Djibril, il est dit que le xml sous la forme que j'ai montrée avant, une fois traité ainsi, donne des résultats surprenants...




    Et voilà ma tentative avec XML::Twig :

    Code perl : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    ######################
    #TENTATIVE AVEC TWIG
    ######################
    my adresseXML;
    do
    {
    <div style="margin-left:40px">print "Etape 1 : Saisissez l'adresse du fichier XML\n";</div><div style="margin-left:40px">chomp($adresseXML = <STDIN>); #on récupère ici l'adresse du fichier XML</div>} while (! $adresseXML);
    my $twig = new XML::Twig;
    $twig->parsefile($FichierXML); #création d'un objet twig
    my $root = $twig->root; #racine du XML

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 25
    Par défaut
    Je suis au regret d'informer ceux qui chercheraient à traiter des fichiers xml aussi imbriqués que je n'ai pas de solution à vous offrir :/
    J'ai été obligé de me bricoler mon propre parseur à grands coups de regexps artisanales et totalement dégueulasses...
    Si vous tombez sur le même programme, je vous suggère de considérer votre fichier comme un simple fichier texte et de le découper à la regexp.

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

Discussions similaires

  1. [debutant] question sur la surcharge des operateurs
    Par hunter99 dans le forum Débuter
    Réponses: 17
    Dernier message: 04/01/2008, 18h26
  2. [Debutant] Question sur le system.out.print
    Par thom02 dans le forum Langage
    Réponses: 8
    Dernier message: 19/07/2005, 18h19
  3. Requete sur des fichiers XML
    Par buildit dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 10/05/2005, 10h57
  4. [debutant] Questions a propos du XML
    Par brune dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 04/06/2004, 09h39
  5. [debutant] Questions sur 1 futur projet
    Par cyrull22 dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 28/04/2003, 21h49

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