uw Thu Mar 15 09:30:02 2001 EDT Modified files: /php4/pear/XML Parser.php Log: - lots of whitespace (tabs vs. spaces) - added basic inline docs - added error handling to the constructor
Index: php4/pear/XML/Parser.php diff -u php4/pear/XML/Parser.php:1.5 php4/pear/XML/Parser.php:1.6 --- php4/pear/XML/Parser.php:1.5 Tue Jan 9 17:01:58 2001 +++ php4/pear/XML/Parser.php Thu Mar 15 09:30:01 2001 @@ -35,155 +35,255 @@ * XML Parser class. This is an XML parser based on PHP's "xml" extension, * based on the bundled expat library. * - * @author Stig Bakken <[EMAIL PROTECTED]> - * + * @author Stig Bakken <[EMAIL PROTECTED]> + * @version $id $ */ class XML_Parser extends PEAR { // {{{ properties + /** + * XML parser handle + * + * @var resource xml_parser + */ var $parser; + + /** + * + * @var resource fopen + */ var $fp; + + /** + * + * @var boolean + */ var $folding = true; + + /** + * + * @var string + */ var $mode; + // }}} // {{{ constructor() + /** + * Creates a xml parser. + * + * @param string character set - see the xml_parser_create() PHP docs. + * @param string + * @throws XML_Parser_Error + */ function XML_Parser($charset = 'UTF-8', $mode = "event") { - $this->PEAR(); - $xp = @xml_parser_create($charset); - if (is_resource($xp)) { - $this->parser = $xp; - $this->setMode($mode); - xml_parser_set_option($xp, XML_OPTION_CASE_FOLDING, - $this->folding); - } + + $this->PEAR(); + + $xp = @xml_parser_create($charset); + if (is_resource($xp)) { + + $this->parser = $xp; + $this->setMode($mode); + xml_parser_set_option($xp, XML_OPTION_CASE_FOLDING, $this->folding); + + } else { + + return new XML_Parser_Error("Can't create xml parser"); + + } + } - // }}} // {{{ setMode() + /** + * + * @param string + * @access public + */ function setMode($mode) { - $this->mode = $mode; - $xp = $this->parser; - xml_set_object($xp, $this); - switch ($mode) { - case "func": - xml_set_element_handler($xp, "funcStartHandler", "funcEndHandler"); - break; - case "event": - if (method_exists($this, "startHandler") || - method_exists($this, "endHandler")) { - xml_set_element_handler($xp, "startHandler", "endHandler"); - } - } - 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, ""); - } + + $this->mode = $mode; + + $xp = $this->parser; + xml_set_object($xp, $this); + + switch ($mode) { + + case "func": + xml_set_element_handler($xp, "funcStartHandler", "funcEndHandler"); + break; + + case "event": + if (method_exists($this, "startHandler") || + method_exists($this, "endHandler")) { + xml_set_element_handler($xp, "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, ""); + } + } - // }}} // {{{ setInputFile() + /** + * Defines + * + * @param string Filename (full path) + * @return resource fopen handle of the given file + * @throws XML_Parser_Error + * @see setInput(), parse() + * @access public + */ function setInputFile($file) { - $fp = @fopen($file, "r"); - if (is_resource($fp)) { - $this->fp = $fp; - return $fp; - } - return new XML_Parser_Error($php_errormsg); + + $fp = @fopen($file, "r"); + if (is_resource($fp)) { + $this->fp = $fp; + return $fp; + } + + return new XML_Parser_Error($php_errormsg); } // }}} // {{{ setInput() + /** + * Sets the file handle to use with parse(). + * + * @param resource fopen + * @access public + * @see parse(), setInputFile() + */ function setInput($fp) { - if (is_resource($fp)) { - $this->fp = $fp; - return true; - } - return new XML_Parser_Error("not a file resource"); + + if (is_resource($fp)) { + $this->fp = $fp; + return true; + } + + return new XML_Parser_Error("not a file resource"); } // }}} // {{{ parse() + /** + * Central parsing function. + * + * @throws XML_Parser_Error + * @return boolean true on success + * @see parseString() + * @access public + */ function parse() { - if (!is_resource($this->fp)) { - return new XML_Parser_Error("no input"); - } - if (!is_resource($this->parser)) { - return new XML_Parser_Error("no parser"); - } - while ($data = fread($this->fp, 2048)) { - $err = $this->parseString($data, feof($this->fp)); - if (PEAR::isError($err)) { - return $err; - } - } - return true; + + if (!is_resource($this->fp)) { + return new XML_Parser_Error("no input"); + } + + if (!is_resource($this->parser)) { + return new XML_Parser_Error("no parser"); + } + + while ($data = fread($this->fp, 2048)) { + $err = $this->parseString($data, feof($this->fp)); + if (PEAR::isError($err)) { + return $err; + } + } + + return true; + } // }}} // {{{ parseString() + /** + * Parses a string. + * + * @param string XML data + * @param boolean ??? + * @throws XML_Parser_Error + * @return mixed true on success or a string with the xml parser error + */ function parseString($data, $eof = false) { - if (!is_resource($this->parser)) { - return new XML_Parser_Error("no parser"); - } - if (!xml_parse($this->parser, $data, $eof)) { - $err = new XML_Parser_Error($this->parser); - xml_parser_free($this->parser); - return $err; - } - return true; + + if (!is_resource($this->parser)) { + return new XML_Parser_Error("no parser"); + } + + if (!xml_parse($this->parser, $data, $eof)) { + $err = new XML_Parser_Error($this->parser); + xml_parser_free($this->parser); + return $err; + } + + return true; } // }}} // {{{ funcStartHandler() function funcStartHandler($xp, $elem, $attribs) { - if (method_exists($this, $elem)) { - call_user_method($elem, $this, $xp, $elem, &$attribs); - } + + if (method_exists($this, $elem)) { + call_user_method($elem, $this, $xp, $elem, &$attribs); + } + } // }}} // {{{ funcEndHandler() function funcEndHandler($xp, $elem) { - $func = $elem . '_'; - if (method_exists($this, $func)) { - call_user_method($func, $this, $xp, $elem); - } + + $func = $elem . '_'; + if (method_exists($this, $func)) { + call_user_method($func, $this, $xp, $elem); + } + } // }}} @@ -197,21 +297,19 @@ // }}} // {{{ constructor() - function XML_Parser_Error($msgorparser = 'unknown error', - $code = 0, - $mode = PEAR_ERROR_RETURN, - $level = E_USER_NOTICE) { - if (is_resource($msgorparser)) { - $code = xml_get_error_code($msgorparser); - $msgorparser = - sprintf("%s at XML input line %d", - xml_error_string(xml_get_error_code($msgorparser)), - xml_get_current_line_number($msgorparser)); - } - $this->PEAR_Error($msgorparser, $code, $mode, $level); + function XML_Parser_Error($msgorparser = 'unknown error', $code = 0, $mode = +PEAR_ERROR_RETURN, $level = E_USER_NOTICE) { + + if (is_resource($msgorparser)) { + $code = xml_get_error_code($msgorparser); + $msgorparser = sprintf("%s at XML input line %d", + +xml_error_string(xml_get_error_code($msgorparser)), + xml_get_current_line_number($msgorparser) + ); + } + $this->PEAR_Error($msgorparser, $code, $mode, $level); + } // }}} } - -?> +?> \ No newline at end of file
-- 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]