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;
+ }
+
+
// }}}
}
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]