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 :

[SimpleXML] Utilisation de simplexml_load_file()


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 50
    Par défaut [SimpleXML] Utilisation de simplexml_load_file()
    Bonjour,

    Je suis en train de développer un code qui permet d'extraire des données de fichiers XML générés par des logiciels de gestion de bibliographie (JabRef, Endnote etc...).

    Le problème c'est que pour "parser" les données du fichier xml par la méthode simplexml_load_file(), il me faut avoir en première ligne du fichier XML :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <?xml version="1.0" encoding="utf-8" ?>
    Certains gestionnaires de biblio (tel que EndNote) ne permettent pas d'insérer cette première ligne dans les fichiers XML.

    Donc je le fais via une petite routine avant de traiter le fichier par la fonction simplexml :

    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
     
    <?
    //Apres avoir récupérer par le biais d'un formulaire le fichier XML
     
    $FileTemp = $_FILES['FileXML']['tmp_name'];
    $entete = "<?xml version=\"1.0\" encoding=\"utf-8\"?".">\n";
    $contenu = file_get_contents($FileTemp);
    $contenu = $entete.$contenu;
    $fichier = fopen($FileTemp,"w+");
    fwrite($fichier,$contenu);
    fclose($fichier);
    @copy($FileTemp,"base.xml");
     
    $File = simplexml_load_file("base.xml");
     
    foreach($File->.....
    J'obtiens après exécution le message d'erreur suivant :

    Warning: simplexml_load_file(): base.xml:1: parser error : Start tag expected, '<' not found in C:\Program Files\wamp\www\database\PostXML.php on line 37

    Warning: simplexml_load_file(): <?xml version="1.0" encoding="utf-8"?>ï..........
    Par contre si je construis moi même le fichier base.xml en rajoutant la première ligne (<?xml version="1.0" encoding="utf-8"?>)... je n'ai aucun problème : tout se fait normalement !!
    Pourtant mes deux fichiers sont identiques : l'insertion de la première ligne via le programme marche très bien...

    La seule différence, c'est que dans un cas je le fais manuellement et que dans l'autre je le fais faire par le programme...

    Quelqu'un aurait il une idée ? C'est un problème de conversion, de réécriture du fichier par fwrite() ?

    Bref là je sèche...

    Merci,
    Bonne journée,
    Bruno

  2. #2
    Membre émérite Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Par défaut
    Essaye ça pour voir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $entete = '<'.'?xml version="1.0" encoding="utf-8"?'.">\n";

  3. #3
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 50
    Par défaut
    J'ai essayé... mais le probleme n'est dans la construction du fichier xml, car j'ai bien apres reecriture du fichier (insertion par le programme de la ligne <?xml version="1.0" encoding="utf-8" ?>) un fichier conforme a ce que je souhaite avoir a savoir :

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?xml version="1.0" encoding="utf-8" ?>
    <XML>
    <RECORDS>
    .....
    </RECORDS>
    </XML>

    mais en fait je pense que c'est un probleme d'encodage parce qu'il me met ce message d'erreur :

    Warning: simplexml_load_file() [function.simplexml-load-file]: <?xml version="1.0" encoding="utf-8"?>"sigle"<XML> in C:\Program Files\wamp\www\database\PostXML.php on line 37
    "sigle" est une chaine de caracteres bizaroide un i tremat suivit de 2 signes > suivit du point d'interogation retourné...
    Mystere......

  4. #4
    Membre émérite Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Par défaut
    Ben... essaye ça alors on sait jamais :
    $contenu = utf8_encode(file_get_contents($FileTemp));

  5. #5
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 50
    Par défaut
    Citation Envoyé par haltabush
    Ben... essaye ça alors on sait jamais :
    $contenu = utf8_encode(file_get_contents($FileTemp));

    Je pense qu'en effet c'est un probleme de ce genre : j'ai fait ce que tu m'as conseillé, et le message d'erreur a changé : en fait le "sigle" present dans le message d'erreur à changer d'expression...

    Je vais continuer sur cette voie... merci...

  6. #6
    Membre émérite Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Par défaut
    Pour en être sûr, récupère le fichier original, copie le dans notepad et enregistre le en utf8... Si ca marche toujorus pas avec ce fichier, c'est que ya un autre problème

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

Discussions similaires

  1. [SimpleXML] Erreur : fonction simplexml_load_file indéfinie
    Par defacta dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 01/10/2007, 13h08
  2. [SimpleXML] pb avec simplexml_load_file dans sous dossier
    Par astrolane dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 31/08/2007, 14h51
  3. [SimpleXML] Utilisation de la fonction simplexml_load_file()
    Par defacta dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 02/11/2006, 11h20
  4. [SimpleXML] Utilisation de SimpleXML ?
    Par ghohm dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 06/07/2006, 19h24
  5. [SimpleXML] Utilisation chez OVH
    Par vodnok dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 25/11/2005, 09h52

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