Hi,
ich versuche Gerade mit PHP eine XML Datei auszulesen (SAX).
Allerdings gelingt mir das nicht so ganz.
Hier ist mal der Code. Ich kann den Fehler nicht finden.
Code
class xml_sax{
private $parser = NULL;
private $currModID = NULL;
private $currItemID = NULL;
private $itemDat = NULL;
private $xml_file = NULL;
private $tag_value = NULL;
private $arrItemCont = array();
private $arrModule = array();
public function parse_xml($file){
$parser = xml_parser_create();
xml_set_element_handler($parser, "$this->startHdl", "$this->endHdl");
xml_set_character_data_handler($parser, "$this->itemData");
if(!$xml_file = fopen($file, "r")){
die("XML-File error");
}
else{
while($tag_value = fread($xml_file, filesize($file))){
if(!xml_parse($parser, $tag_value, feof($xml_file))){
die(xml_error_string(xml_get_error_code($parser)));
}
}
}
echo $arrModule[$arrItemCont[0]];
}
private function startHdl($parser, $elmName, $attribs){
if($elmName == "module"){
$currModID = $attribs["id"];
}
elseif($elmName == "item"){
$currItemID = $attribs["id"];
}
}
private function itemData($parser, $data){
$itemDat = $itemDat + $data;
}
private function endHdl($parser, $elmName){
if($elmName == "module"){
$arrModule[$currModID] = $arrItemCont;
}
elseif($elmName == "item"){
$arrItemCont[$currItemID] = $itemDat;
}
}
}
Alles anzeigen
Es gab wohl schon am Anfang ein Problem, da er innerhalb der Class die Start/End/Daten-Funktion nicht finden konnte.
Weiß nicht ob ich das richtig gelöst habe das ich als string "$this->Handlername" übergeben habe, aber er wirft mir schon mal keinen Fehler aus.
Anscheinend werden die Funktionen nicht aufgerufen.
Kann auch sein, dass ich mit dem objektorientierten Ansatz was falsch gemacht habe, da ich in PHP5 erst einsteige.
Schon mal vielen Dank
Mir nicht