PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP für Fortgeschrittene und Experten (http://www.selfphp.de/forum/forumdisplay.php?f=13)
-   -   XML auslesen und als Array zurückgeben klappt nicht ... (http://www.selfphp.de/forum/showthread.php?t=4187)

MichaelR 03.05.2003 12:29:53

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


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:26:17 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.