Hallo,
über include binde ich eine php Datei ein, die folgende XML Funktionen enthält:
$inTag = false;
$Tag = '';
$aQuestions = array();
$x = 0;
function XML_Read_QuizSet($XML_File){
global $aQuestions, $x;
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "QuizSet_StartTag", "QuizSet_EndTag");
xml_set_character_data_handler($xml_parser, "QuizSet_Data");
xml_parse($xml_parser, $XML_FILE)
or die (sprintf("XML error: %s at line %d", xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
xml_parser_free($xml_parser);
return $aQuestions;
}
// ROUTINES
function QuizSet_StartTag($parser, $tagName, $attrs){
global $inTag, $Tag;
if ($inTag == true){
$Tag = $tagName;
}
elseif ($tagName == 'QUESTION'){
$inTag = true;
}
}
function QuizSet_EndTag($parser, $tagName){
global $inTag, $Tag, $x;
if ($tagName == 'QUESTION'){
$x++;
$inTag = false;
}
}
function QuizSet_Data($parser, $data){
global $inTag, $Tag, $aQuestions, $x;
if ($inTag == true){
$aQuestions[$x] .= $data;
}
}
Die Funktion XML_Read_QuizSet() bekommt die XML Struktur als String übergeben, soll diesen auslesen, die Daten in ein einfaches Array ($aQuestions) schreiben und das Array dann wieder zurückgeben.
Das geht aber nicht ???
Wenn ich den Inhalt der Funktion XML_Read_QuizSet() einfach außerhalb einer Funktionsklammer {} schreibe, dann geht alles wunderbar; nur bei obiger Form nicht; es scheint als würden die Funktionen QuizSet_EndTag(), QuizSet_StartTag() und QuizSet_Data() nicht gefunden werden - wenn ich dort ein print "<script>alert()</script>"; reinsetze müsste eigentlich bei jedem XML Element [<question>bla bal bal </question>] ein alert auftauchen, tut's aber nicht.
Findet jemand den Fehler ??
Danke + Grüße
Michael