Validation load xml en php

Dr_king13 -  
 dZastreux -
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!!!
Configuration: Windows XP
Internet Explorer 6.0 et firefox

2 réponses

  1. Jerome
     
    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
  2. dZastreux
     
    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