2009-01-13 5 views
8

J'ai un site basé sur PHP qui inclut un flux de stock XML, qui est servi à distance à partir d'ASP (l'URL du flux XML est de l'ordre: http://remote.com/client.asp). Comme le flux est souvent indisponible (ce qui signifie que le site renvoie une erreur ASP), je voudrais vérifier si le flux est bien formé au format XML avant de l'inclure. Ma fonction url_exists habituelle ne fait pas l'affaire car, bien sûr, l'URL existe même en 'erreur'.Vérifier si le fichier distant est bien formé XML avec PHP

TIA.

+1

Remarque: soyez prudent avec la terminologie. Ce que vous décrivez ressemble à du XML "bien formé", ce qui signifie quelque chose de différent du XML "valide". – cletus

+0

Tout à fait droit de cletus (merci) l'édition maintenant ... – da5id

Répondre

21

Utilisez cURL pour obtenir le résultat et simplexml pour vérifier si le code XML est well-formed.

$curl = curl_init(); 
curl_setopt($curl, CURLOPT_URL, "http://remote.com/client.asp"); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
$output = curl_exec($curl); 
curl_close($curl); 
if (simplexml_load_string($output)) { 
    // well-formed XML 
} else { 
    // it isn't 
} 
+0

Merci. J'utilise déjà quelque chose de très similaire à cela, et c'est ce script qui génère souvent une erreur. Bien que j'utilise simplexml_load_file, y aurait-il une différence avec simplexml_load_string? – da5id

+0

Apparemment, tout est maintenant bon. Merci encore, marquant la réponse comme acceptée. – da5id

+0

J'ai un problème avec SimpleXML et c'est très bizarre. Apparemment simplexml_load_file() de l'URL et simplexml_load_string() du résultat cURL de l'URL pourrait obtenir un résultat différent. On pourrait échouer pendant qu'un autre pourrait travailler ... C'est au-delà de moi comment cela est arrivé. Jetez un coup d'oeil à ma fonction cURL maintenant – fred

Questions connexes