Einzelnen Beitrag anzeigen
  #1  
Alt 03.05.2003, 11:29:53
MichaelR MichaelR ist offline
Anfänger
 
Registriert seit: Jun 2002
Beiträge: 13
XML auslesen und als Array zurückgeben klappt nicht ...

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, d.h. es wird gar nichts vom übergebenen XML ausgelesen, geschweige denn dann zurückgegeben (nur ein leerer string wird returned) ???

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
Mit Zitat antworten