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

Bibliothèques et frameworks PHP Discussion :

[XML] simplexml erreur "extra content"


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre du Club Avatar de gwena54
    Homme Profil pro
    Webdesigner
    Inscrit en
    Mai 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2007
    Messages : 68
    Points : 57
    Points
    57
    Par défaut [XML] simplexml erreur "extra content"
    Bonjour à tous,

    j'utilise simplexml pour parser un fichier xml. Jusque là tout va bien.
    Le souci est que j'ai une erreur (je la mets pas en entier, ça sert à rien)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Warning: simplexml_load_file() [function.simplexml-load-file]: file.xml:1: parser error : Extra content at the end of the document in test.php on line 10
    Mon xml est de cette forme:

    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
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <jean>
       <prout>txt</prout>
       <bla>txt</bla>
    </jean>
    <liste>
      <bien>
          <id>1</id>
          <nom>robert</id>
          <lafonction>admin</lafonction>
      </bien>
      <bien>
          <id>2</id>
          <nom>albert</id>
          <lafonction>secretaire</lafonction>
      </bien>
      <bien>
          <id>3</id>
          <nom>jeanne</id>
          <lafonction>rien</lafonction>
      </bien>
    .....
    </liste>
    et quand je parse mon fichier, le noeud du début, jean, qui est tout seul me renvoie l'erreur et arrête mon script!
    SimpleXML veut à tout prix que ce soit un array, mais le problème est que ça ne peut être un array vu que c'est un noeud unique (d'aprés ce que j'ai compris).

    Alors ma question, comment faire pour ignorer ce premier noeud? Ou alors comment faire pour le supprimer?
    J'ai essayé unset mais ça ne fonctionne pas car simple xml n'arrive pas à y accéder, j'ai essayé avec le dom intégré à PHP mais je n'arrive pas à y accéder non plus...
    Du coup, que faire??!!

    Merci d'avance de vos réponses
    Création de sites, référencement, immobilier et aussi un ptit' blog sur le web et les choses intéressantes du moment

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Tout document XML (valide) ne peut avoir qu'une racine. Il y en a deux là : jean et liste. Il est donc normal que SimpleXML "plante". Il vous faut revoir votre structure.

  3. #3
    Membre du Club Avatar de gwena54
    Homme Profil pro
    Webdesigner
    Inscrit en
    Mai 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2007
    Messages : 68
    Points : 57
    Points
    57
    Par défaut
    C'est bien ce que je me disais...
    Le problème est que je n'ai aucun contrôle sur ce xml, ce n'est pas moi qui le génère, c'est pour ça que je souhaite supprimer ce noeud...
    Mais du coup si la structure n'est pas valide je suppose qu'on ne peut réaliser aucun traitement dessus?!
    Création de sites, référencement, immobilier et aussi un ptit' blog sur le web et les choses intéressantes du moment

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    mdr, il est sympa ce fournisseur.

    Document invalide = impossibilité de le traiter comme tel. Donc il faut oublier dom, simplexml, etc à moins de le traiter pour le rendre valide avant (en recréant une racine par exemple qui va englober le reste ou de séparer vos deux "racines" en deux documents distincts). Sinon il faudra le traiter comme du texte (expression régulière ou fgets/file/explode/etc).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $out = preg_replace('~<jean>.*</jean>~sU', '', $in);
    # Un fix pour les <nom>...</id>
    #$out = preg_replace('~<nom>([^<]*)</id>~s', '<nom>\1</nom>', $out);
    // là on peut jouer avec $out normalement
    Par contre, la partie liste n'est pas valide non plus, des balises id viennent terminer celles en nom

  5. #5
    Membre du Club Avatar de gwena54
    Homme Profil pro
    Webdesigner
    Inscrit en
    Mai 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2007
    Messages : 68
    Points : 57
    Points
    57
    Par défaut
    désolé j'ai retapé à la main la structure du fichier xml, à la place de </id> c'est bien </nom>

    he bien merci julp, j'avais espéré que ta solution que j'ai déjà réalisé mais considéré comme quelque chose de trés temporaire pouvait être évitée mais ce n'est pas le cas

    j'ai envoyé un mail à l'éditeur, j'espère qu'ils se bougeront les fesses!

    Merci à vous!
    Création de sites, référencement, immobilier et aussi un ptit' blog sur le web et les choses intéressantes du moment

Discussions similaires

  1. [SimpleXML] Erreur LibXml "Extra content at the end of the document" malgré XML valide
    Par saintbios dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 26/07/2012, 14h57
  2. Réponses: 1
    Dernier message: 13/09/2007, 16h57
  3. Export requete texte -> Excel : erreur quote
    Par Sam 069 dans le forum VBA Access
    Réponses: 1
    Dernier message: 18/07/2007, 15h27
  4. [SimpleXML] erreur avec simple XML sur le constructeur
    Par zulot dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 20/04/2007, 16h06
  5. Modification d'un texte dans une fenetre "d'erreur"
    Par PAUL87 dans le forum Access
    Réponses: 8
    Dernier message: 21/10/2005, 13h12

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