cvs: php4 /pear/XML Parser.php

From: Date: Thu, 15 Mar 2001 19:34:13 +0000
Subject: cvs: php4 /pear/XML Parser.php
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-4585@lists.php.net to get a copy of this message
uw Thu Mar 15 11:34:13 2001 EDT Modified files: /php4/pear/XML Parser.php Log: - made it work without warnings - handler methods are now configurable - added startHandler() and endHandler() "event" is the default handling mode and calls these methods. Implemented them as "abstract" methods. Index: php4/pear/XML/Parser.php diff -u php4/pear/XML/Parser.php:1.8 php4/pear/XML/Parser.php:1.9 --- php4/pear/XML/Parser.php:1.8 Thu Mar 15 10:39:17 2001 +++ php4/pear/XML/Parser.php Thu Mar 15 11:34:13 2001 @@ -66,6 +66,21 @@ */ var $mode; + + /** + * Mapping from expat handler function to class method. + * + * @var array + */ + var $handler = array( + "character_data_handler" => "cdataHandler", + "default_handler" => "defaultHandler", + "processing_instruction_handler" => "piHandler", + "unparsed_entitry_decl_handler" => "unparsedHandler", + "notation_decl_handler" => "notationHandler", + "external_entity_ref_handler" => "entityrefHandler" + ); + // }}} // {{{ constructor() @@ -99,69 +114,37 @@ // {{{ setMode() - /** - * + /** + * Sets the mode and all handler. + * * @param string - * @access public + * @see $handler */ function setMode($mode) { $this->mode = $mode; - $xp = $this->parser; - xml_set_object($xp, $this); + xml_set_object($this->parser, $this); switch ($mode) { case "func": - xml_set_element_handler($xp, "funcStartHandler", "funcEndHandler"); + xml_set_element_handler($this->parser, "funcStartHandler", "funcEndHandler"); break; case "event": - if (method_exists($this, "startHandler") || - method_exists($this, "endHandler")) { - xml_set_element_handler($xp, "startHandler", "endHandler"); - } + xml_set_element_handler($this->parser, "startHandler", "endHandler"); break; } - - if (method_exists($this, "cdataHandler")) { - xml_set_character_data_handler($xp, "cdataHandler"); - } else { - xml_set_character_data_handler($xp, ""); - } - if (method_exists($this, "defaultHandler")) { - xml_set_default_handler($xp, "defaultHandler"); - } else { - xml_set_default_handler($xp, ""); - } - - if (method_exists($this, "piHandler")) { - xml_set_processing_instruction_handler($xp, "piHandler"); - } else { - xml_set_processing_instruction_handler($xp, ""); - } - - if (method_exists($this, "unparsedHandler")) { - xml_set_unparsed_entity_decl_handler($xp, "unparsedHandler"); - } else { - xml_set_unparsed_entity_decl_handler($xp, ""); - } - - if (method_exists($this, "notationHandler")) { - xml_set_notation_decl_handler($xp, "notationHandler"); - } else { - xml_set_notation_decl_handler($xp, ""); - } - - if (method_exists($this, "entityrefHandler")) { - xml_set_external_entity_ref_handler($xp, "entityrefHandler"); - } else { - xml_set_external_entity_ref_handler($xp, ""); - } - + foreach ($this->handler as $xml_func => $method) + if (method_exists($this, $method)) { + $xml_func = "xml_set_" . $xml_func; + $xml_func($this->parser, $method); + } + } + // }}} // {{{ setInputFile() @@ -281,7 +264,25 @@ } } - + + /** + * + * @abstract + */ + function StartHandler($xp, $elem, $attribs) { + return NULL; + } + + + /** + * + * @abstract + */ + function EndHandler($xp, $elem) { + return NULL; + } + + // }}} }

« previous php.cvs (#4585) next »