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]