Hallo,
ich habe ein Problem mit dem Simplexml_load_file. Denn wir haben festgestellt, das gelegentlich der Quellserver für die XML Datein nicht erreichbar ist. Der Nutzer sieht also eine blöde PHP Fehlermeldung.
Eine Lösung habe ich auch gefunden: http://www.php.net/manual/de/function.simplexml-load-file.php#97077 .
Hier wird vorher geprüft ob die XML auch wirklich erreichbar ist.
Nun zeigt sich aber folgendes Problem:
Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 1: parser error : Start tag expected, '<' not found in C:\xampplite\htdocs\abfrage\test.php on line 22
Warning: simplexml_load_string() [function.simplexml-load-string]: 634 in C:\xampplite\htdocs\abfrage\test.php on line 22
Warning: simplexml_load_string() [function.simplexml-load-string]: ^ in C:\xampplite\htdocs\abfrage\test.php on line 22
Für den Quellcode:
<?php
function loadXML2($domain, $path, $timeout = 5) {
$fp = fsockopen($domain, 80, $errno, $errstr, $timeout);
if($fp) {
// make request
$out = "GET $path HTTP/1.1\r\n";
$out .= "Host: $domain\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
// get response
$resp = "";
while (!feof($fp)) {
$resp .= fgets($fp, 128);
}
fclose($fp);
// check status is 200
$status_regex = "/HTTP\/1\.\d\s(\d+)/";
if(preg_match($status_regex, $resp, $matches) && $matches[1] == 200) {
// load xml as object
$parts = explode("\r\n\r\n", $resp);
return simplexml_load_string($parts[1]);
}
}
return false;
}
$xml = loadXML2("meine-domain.com", "/xml/index.php?only=dong");
if($xml) {
echo 'XML geladen'; // xml doc loaded
} else {
echo 'Nee hat nicht geklappt'; // failed. show friendly error message.
}
?>
Die XML ist bei manuellem Aufruf fehlerfrei sehe:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<paket>
<anfrage>
<dong>DE</dong>
<objekt>1</objekt>
<ergebnis>2</ergebnis>
</anfrage>
</paket>
Gedankenfehler?