MichaelR: XML auslesen und als Array zurückgeben klappt nicht ...

Beitrag lesen

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