2009-01-13 5 views
8

Ich habe eine PHP-driven Website, die einen XML-Viehfutter enthält, die aus der Ferne von ASP (das heißt die XML-Feed-URL ist die Bestellung: http://remote.com/client.asp) serviert wird.überprüfen Sie, ob Remote-Datei ist wohlgeformte XML mit PHP

Da das Futter oft nicht zur Verfügung steht (damit meine ich die Website eine ASP-Fehler zurückgibt) Ich mag würde überprüfen, ob das Futter, bevor es mit XML wohlgeformt ist. Meine übliche Funktion url_exists funktioniert nicht, da die URL natürlich existiert, selbst wenn sie "fehlerhaft" ist.

TIA.

+1

Hinweis: Seien Sie vorsichtig mit der Terminologie. Was Sie beschreiben, klingt wie "wohlgeformtes" XML, was etwas anderes als "gültiges" XML bedeutet. – cletus

+0

Ganz richtig cletus (Danke) Bearbeitung jetzt ... – da5id

Antwort

21

Verwenden Sie cURL, um das Ergebnis zu erhalten, und simplexml, um zu überprüfen, ob das XML well-formed ist.

$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

Danke. Ich benutze bereits etwas sehr ähnliches, und dieses Skript wirft oft einen Fehler auf. Obwohl ich simplexml_load_file verwende, würde es einen Unterschied mit simplexml_load_string geben? – da5id

+0

Anscheinend so, wie alles jetzt gut ist. Nochmals vielen Dank, Antwort als akzeptiert. – da5id

+0

Ich habe Probleme mit SimpleXML und es ist sehr seltsam. Offenbar simplexml_load_file() von URL und simplexml_load_string() von cURL Ergebnis der URL könnte anderes Ergebnis bekommen. Man könnte scheitern, während ein anderer funktionieren könnte ... Es ist mir nicht bewusst, wie das passiert ist. einen Blick auf meine cURL-Funktion jetzt – fred