Hallo!
Habe folgendes Problem; vielleicht kann mir jemand von euch helfen:
Ich muss einzelne Daten aus XML-Dateien mit PHP einlesen. Dazu habe ich mir am Anfang ein eigenes Skript geschrieben, welches nur mit String-Funktionen arbeitet. Da es damit immer wieder zu Problemen kam, verwende ich seit einiger Zeit folgendes den PHP-XML-Parser nutzendes Skript:
----
function GetStartTag($parser, $element_name, $element_attribs) {
global $tagstack;
$tagstack .= "<" . $element_name . ">";
}
function GetData($parser, $data) {
global $tagstack, $tagarray, $lasttag;
if ($lasttag == $tagstack) $tagarray["$tagstack"] .= $data; else $tagarray["$tagstack"] = $data;
$lasttag = $tagstack;
}
function GetEndTag($parser, $element_name) {
global $tagstack;
$x = "<" . $element_name . ">";
if (strrchr($tagstack, $x) == $x) $tagstack = substr($tagstack, 0, strrpos($tagstack, $x));
else {
echo "Error: no corresponding start tag for end tag", htmlspecialchars($x), "<br><br>";
exit;
}
}
function XML_Einlesen($padfile) {
$tagstack = "";
$lasttag = "?";
if (@fopen($padfile, "r") != false) {
$fp_XML = @fopen($padfile, "r");
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "GetStartTag", "GetEndTag");
xml_set_character_data_handler($xml_parser, "GetData");
while ($data = fread($fp_XML, 4096)) {
if (!xml_parse($xml_parser, $data, feof($fp_XML))) break;
}
xml_parser_free($xml_parser);
fclose($fp_XML);
}
}
----
Mit den meisten XML-Dateien funktioniert dieses auch gut, jedoch kommt es auch damit bei vereinzelten Dateien zu Problemen. Beispielsweise beim Einlesen der Datei "http://groups.yahoo.com/group/analyseit/files/anit_v2.xml", bei der einfach nichts zurückgegeben wird, oder bei der Datei "http://www.visualcatalogues.com/vclm_padinfo/pad_file.xml", bei der die Fehlermeldung "php_hostconnect: connect failed" zurückgegeben wird. Beide Dateien sind jedoch mit dem Internet Explorer problemlos erreichbar und werden richtig dargestellt.
Wie gesagt: Das Skript arbeitet mit fast jeder Datei, aber ich verstehe nicht wo beispielsweise das Problem bei oben genannten XML-Dateien liegt. Sind die XML-Dateien fehlerhaft? Ich konnte keinen Fehler finden und der Parser des Internet Explorers stellt Sie auch ohne Probleme dar! Oder ist noch irgendein Fehler im oben genannten Skript?
Hoffe, ihr könnt mir helfen!
Herzlichen Dank bereits im Voraus
Andreas