simplexml_load_file : Verifier doc xml non vide

jdelsinne
Invité n'ayant pas de compte PHPfrance

16 juin 2006, 10:27

Bonjour,
J'utilise la fonction simplexml_load_file pour charger mon fichier xml.
Dû à une erreur d'écriture, le fichier était présent, mais vide.
Dans ce cas, la fonction lance un mess. d'erreur :

Code : Tout sélectionner

Warning: simplexml_load_file() [function.simplexml-load-file]: /var/www/publicSite//src/xml/infosponctuelles/infoFromAdmin.xml:1: parser error : Document is empty in /var/www/publicSite/admin/src/php/actualites/index.php on line 99
Y a t-il une façon d'éviter cette erreur ?

Merci,
Jessica

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

16 juin 2006, 10:59

Une idée en l'air, mais si tu testais la taille de ton fichier avec filesize() avant de lancer l'import xml ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 112 Messages

16 juin 2006, 10:59

 if (!simplexml_load_file(..)) simplexml_load_file(...);
Image

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

16 juin 2006, 11:01

c'est dommage de faire le chargement 2 fois, non ?

De plus, c'est pas simplexml_load_file() qui pose problème ?

Sinon, on peut faire
if ($xml = simplexml_load_file(...)) {
  //Fichier non vide
} else {
  //Fichier vide
}
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 112 Messages

16 juin 2006, 11:03

c'est dommage de faire le chargement 2 fois, non ?

De plus, c'est pas simplexml_load_file() qui pose problème ?

Sinon, on peut faire
if ($xml = simplexml_load_file(...)) {
  //Fichier non vide
} else {
  //Fichier vide
}
Le simplexml_load_file retourne false si jamais il y a une erreur, ca peut donc être une alternative non?
Image

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

16 juin 2006, 11:10

justement, pourquoi ne pas tester le retour directement plutot que de tester le retour seul puis charger ensuite
if ($xml = simplexml_load_file(...)) { 
met le retour de simple_xml_load() dans $xml et si ce retour == false, on passe dans le else
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 112 Messages

16 juin 2006, 11:13

Ha oui, j'avais pas compris :oops: ! Merci pour l'explication :D
Image