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 mal formaté


Sujet :

Modules Perl

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 124
    Points : 53
    Points
    53
    Par défaut XML mal formaté
    Salut à tous,
    Utilisant XML::XPath, je dois parsé une liste de fichiers XML.
    Sauf que pour certains fichiers mal formatés, j'obtiens l'erreur not well-formed (invalid token), ce qui est normal, mais mon script s'arrête et n'ira pas analyser le reste des fichiers.
    Comment faire pour continuer à parser en ignorant les fichiers mal formatés ?
    Merci

  2. #2
    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
    Si le xml est mal formé il est impossible à un parseur d'analyser ton fichier. C'est un comportement normal. Il est difficile d'utiliser un GPS si les cartes sont fausses .

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 124
    Points : 53
    Points
    53
    Par défaut
    Je sais bien, mais le problème est que si j'ai par exemple, 10 fichiers à analyser, et qu'au bout du 3eme il y a un fichier mal formé, alors je ne peux pas parser les 7 autres.
    Comment faire pour continuer à parser les autres fichiers ?
    En fait, je sais que j'ai des fichiers mals formés mais je veux pouvoir continuer à parser.
    Et si j'ai 100 ou 1000 fichiers je vais pas les ouvrir à la main pour savoir s'ils sont mals formatés ou pas.

  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
    Peux-tu nous montrer ton programme ?
    Il faut revoir ton algorithme afin d'intercepter l'erreur de formatage afin d'éviter un die qui arrête ton programme (probablement avec la fonction Perl eval).

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 124
    Points : 53
    Points
    53
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    foreach my $in (@fichiers){
     		my $xp = XML::XPath->new($repertoire."$in");
    		#utilisation de $xp ne pose aucun problème sur les fichiers correctement formatés (comportement attendu)
    }

  6. #6
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    foreach my $in (@fichiers){
       eval { my $xp = XML::XPath->new($repertoire."$in"); };
       if ($@) {
         warn $@;
         next;
       }
        #utilisation de $xp ne pose aucun problème sur les fichiers correctement formatés (comportement attendu)
    }

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 124
    Points : 53
    Points
    53
    Par défaut
    Salut,
    J'obtiens toujours la même erreur.
    Es-tu sûr que next doit se trouver dans le même bloc que warn ?

  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
    Citation Envoyé par Superne0 Voir le message
    Salut,
    J'obtiens toujours la même erreur.
    Es-tu sûr que next doit se trouver dans le même bloc que warn ?
    Si je le mets, c'est que j'en suis sûr . next te permet de passer à l'itération suivante de ta boucle.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 124
    Points : 53
    Points
    53
    Par défaut
    Oui effectivement ça devrait marcher.
    Mais je suis obligé de sortir le my pour déclarer la variable XPath:
    my $xp;
    eval { $xp .... };

  10. #10
    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
    Et ? je ne vois pas le rapport avec my. Si ça fonctionne ou non, my n'est pas à l'origine.

Discussions similaires

  1. Correction d'un fichier xml mal formé
    Par devlo dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 25/10/2006, 11h30
  2. [XML/CSS] Outil d'édition de fichier xml temporairement formaté
    Par Bloodscalp dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 02/10/2006, 07h54
  3. [SQL] Erreur d'analyse XML : mal formé
    Par lodan dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 21/08/2006, 09h10
  4. [C#]Datagrid à partir de fichier XML(non formaté)
    Par nutball dans le forum Windows Forms
    Réponses: 3
    Dernier message: 26/07/2006, 23h25
  5. Cherche Schema XML du format XMI
    Par mickagame dans le forum Valider
    Réponses: 2
    Dernier message: 11/07/2005, 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