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
 nicht angemeldet
 nicht angemeldet