Validation load xml en php

Fermé
Dr_king13 - 27 févr. 2008 à 23:29
 dZastreux - 15 oct. 2009 à 00:38
Bonjour,

j'aimerais pouvoir valider si un xml a été correctement "loader" en php afin d'afficher un message d'erreur plus propre que ceci :

//---------------------------------------------
Warning: DOMDocument::load() [function.DOMDocument-load]: php_network_getaddresses: getaddrinfo failed: Hôte inconnu. in C:\0461454\FIN_27fev\index.php on line 221

Warning: DOMDocument::load(http://prof.tim.cstj.net/aboudrea/xml/3nouvelles.php) [function.DOMDocument-load]: failed to open stream: No such file or directory in C:\0461454\FIN_27fev\index.php on line 221

Warning: DOMDocument::load() [function.DOMDocument-load]: I/O warning : failed to load external entity "http://prof.tim.cstj.net/aboudrea/xml/3nouvelles.php" in C:\0461454\FIN_27fev\index.php on line 221
//---------------------------------------------

jai lu que DOMDocument->load devrait retourner "false" en cas d'echec mais je n'arrive pas à programmer un IF() qui afficherait un message perso du genre: "Désolé le contenu de la page n'as pus etre téléchargé..."

Merci d'avance pour vos conseils!!!
A voir également:

2 réponses

En faisant ceci :

if ( !$test = @DOMDocument->load('fichier.xml') )
{
echo 'Désolé le contenu de la page n'as pus etre téléchargé...';
}

Le @ sert à ne pas afficher les erreurs PHP de la fonction. Faudra tester il y a surement une erreur dans ce que je te donne.
2
Salut, merci du tuyau Jérome,

Sujet assez ancien, certes, mais au final ça peut toujours dépanner les âmes égarées, de passage ! :)
Bon, juste pour dire qu'avec du PHP5, la syntaxe exacte qui a fonctionné pour moi est :

$fileName="book.xml";
function fileToObject($fileName) {
//******************************
$dom = @DOMDocument::load($fileName);
if (!$dom ) { return false; }
//******************************
if (!@$dom->validate()) { return false; }
$object = new stdClass();
$object->source = $fileName;
$root = $dom->documentElement;
$object->root = new stdClass();
getElement($root, $object->root);
return $object;
}
0