I've created a class to read an XML file. I've created 3 methods startElement, endElement and charData. I have added xml_set_object($this->myparser, &$this).
But I keep on getting the message
"Warning: Unable to call handler startElement() in /home/httpd/html/ioco/Extract/Extract_program/XMLRequestReader.php on line 49"
I checked (also 2 other persons) for typing errors. We can't find any.
I transferred the complete code to another PC and tried my class on a localhost apache server. Here my code functions.
So I think it has something to do with apache.
Can anybody help me, I'm getting desperate.
Thanks.
jan@orlahdata.be
I added the complete class code
?php
/ Doel: XMLReader voor het lezen Request.xml
Versie: 1.0
Datum: 16/11/2002
/
require_once("./Backend/XMLReader.php");
require_once("./Backend/Request.php");
require_once("./Backend/FileHandler.php");
class XMLRequestReader extends XMLReader{
var $file = "./xmlfiles/XMLInitfiles/Requests.xml";
var $request;
var $dummyrequest;
var $fh;
var $questionname;
var $currenttag;
var $currentattrib;
var $xmlparser;
var $data;
function XMLRequestReader(){
$this->currenttag = "";
$this->currentattrib = "";
$this->xmlparser = xml_parser_create();
$casefold = xml_parser_get_option($this->xmlparser, XML_OPTION_CASE_FOLDING);
$targetencoding = xml_parser_get_option($this->xmlparser, XML_OPTION_TARGET_ENCODING);
if($casefold == 1){
xml_parser_set_option($this->xmlparser, XML_OPTION_CASE_FOLDING, false);
}
xml_set_object($this->xmlparser, &$this);
xml_set_element_handler($this->xmlparser, 'startElement', 'endElement');
xml_set_character_data_handler($this->xmlparser, "characterData");
//$this->XMLReader();
$this->fh = new FileHandler($this->file, "r");
$this->request = new Request();
}
function getXMLRequest($question){
$this->questionname = $question;
$error = $this->fh->open();
if(!($error)){
while(!($this->fh->isEof())){
$this->data = $this->fh->read();
if(!xml_parse($this->xmlparser, $this->data, $this->fh->isEof())){
$this->clearParser();
return $this->request;
}
}
$this->clearParser();
}
return $this->request;
}
function startElement( $parser, $name, $attribs){
$this->currenttag = $name;
$this->currentattribs = $attribs;
switch($name){
case "requests":
break;
case "request":
$this->dummyrequest = new Request();
break;
case "requestname":
break;
case "requestaantalparameters":
break;
case "requestsqlstring":
break;
default:
break;
}
}
function endElement($parser, $name){
switch($name){
case "requests":
break;
case "request":
if($this->dummyrequest->isRequest($this->questionname)){
$this->request = $this->dummyrequest;
}
$this->dummyrequest = null;
break;
case "requestname":
break;
case "requestaantalparameters":
break;
case "requestsqlstring":
break;
default:
break;
}
$this->currenttag = "";
$this->currentattribs = "";
}
function characterData($parser, $data){
switch($this->currenttag){
case "requests":
break;
case "request":
break;
case "requestname":
$this->dummyrequest->setRequestName($data);
break;
case "requestaantalparameters":
$this->dummyrequest->setRequestAantal($data);
break;
case "requestsqlstring":
$this->dummyrequest->setRequestString($data);
break;
default:
break;
}
}
}
?>