Public Member Functions | Data Fields | Protected Member Functions

ilSaxParser Class Reference

Base class for sax-based expat parsing extended classes need to overwrite the method setHandlers and implement their own handler methods. More...

Inheritance diagram for ilSaxParser:
Collaboration diagram for ilSaxParser:

Public Member Functions

 ilSaxParser ($a_xml_file= '', $throwException=false)
 Constructor setup ILIAS global object public.
 setXMLContent ($a_xml_content)
 getXMLContent ()
 getInputType ()
 startParsing ()
 stores xml data in array
 createParser ()
 create parser
 setOptions ($a_xml_parser)
 set parser options
 setHandlers ($a_xml_parser)
 set event handler should be overwritten by inherited class private
 openXMLFile ()
 open xml file
 parse ($a_xml_parser, $a_fp=null)
 parse xml file
 freeParser ($a_xml_parser)
 free xml parser handle
 setThrowException ($throwException)
 set error handling

Data Fields

 $input_type = null
 $xml_content = ''
 $ilias
 $lng
 $xml_file
 $throwException = false

Protected Member Functions

 handleError ($message, $code)
 use given error handler to handle error message or internal ilias error message handle

Detailed Description

Base class for sax-based expat parsing extended classes need to overwrite the method setHandlers and implement their own handler methods.

Author:
Stefan Meyer <smeyer>
Version:
Id:
class.ilSaxParser.php 14542 2007-08-20 16:21:23Z rkuester

Definition at line 37 of file class.ilSaxParser.php.


Member Function Documentation

ilSaxParser::createParser (  ) 

create parser

private

Definition at line 154 of file class.ilSaxParser.php.

References handleError().

Referenced by ilnetucateResponse::startParsing(), and startParsing().

        {
                $xml_parser = xml_parser_create("UTF-8");

                if($xml_parser == false)
                {
                        $this->handleError("Cannot create an XML parser handle",$this->ilias->error_obj->FATAL);
                }
                return $xml_parser;
        }

Here is the call graph for this function:

Here is the caller graph for this function:

ilSaxParser::freeParser ( a_xml_parser  ) 

free xml parser handle

private

Definition at line 248 of file class.ilSaxParser.php.

Referenced by ilnetucateResponse::startParsing(), and startParsing().

        {
                if(!xml_parser_free($a_xml_parser))
                {
                        $this->ilias->raiseError("Error freeing xml parser handle ",$this->ilias->error_obj->FATAL);
                }
        }

Here is the caller graph for this function:

ilSaxParser::getInputType (  ) 

Definition at line 114 of file class.ilSaxParser.php.

Referenced by SurveyImportParserPre38::parse(), SurveyImportParser::parse(), ilXMLChecker::parse(), parse(), and startParsing().

        {
                return $this->input_type;
        }

Here is the caller graph for this function:

ilSaxParser::getXMLContent (  ) 

Definition at line 109 of file class.ilSaxParser.php.

Referenced by SurveyImportParserPre38::parse(), SurveyImportParser::parse(), ilXMLChecker::parse(), and parse().

        {
                return $this->xml_content;
        }

Here is the caller graph for this function:

ilSaxParser::handleError ( message,
code 
) [protected]

use given error handler to handle error message or internal ilias error message handle

Parameters:
string $message
string $code

Definition at line 234 of file class.ilSaxParser.php.

Referenced by createParser(), openXMLFile(), parse(), and startParsing().

                                                        {
                if ($this->throwException) {
                        require_once ('./classes/class.ilSaxParserException.php');                      
                        throw new ilSaxParserException ($message, $code);
                } else {
                        $this->ilias->raiseError($message, $code);
                }
                return false;
        }

Here is the caller graph for this function:

ilSaxParser::ilSaxParser ( a_xml_file = '',
throwException = false 
)
ilSaxParser::openXMLFile (  ) 

open xml file

private

Definition at line 187 of file class.ilSaxParser.php.

References handleError().

Referenced by startParsing().

        {
                if(!($fp = fopen($this->xml_file,'r')))
                {
                        $this->handleError("Cannot open xml file",$this->ilias->error_obj->FATAL);
                }
                return $fp;
        }

Here is the call graph for this function:

Here is the caller graph for this function:

ilSaxParser::parse ( a_xml_parser,
a_fp = null 
)

parse xml file

private

Reimplemented in ilnetucateResponse, ilXMLChecker, SurveyImportParser, and SurveyImportParserPre38.

Definition at line 200 of file class.ilSaxParser.php.

References $data, getInputType(), getXMLContent(), and handleError().

Referenced by startParsing().

        {
                switch($this->getInputType())
                {
                        case 'file':

                                while($data = fread($a_fp,4096))
                                {
                                        $parseOk = xml_parse($a_xml_parser,$data,feof($a_fp));
                                }
                                break;
                                
                        case 'string':
                                $parseOk = xml_parse($a_xml_parser,$this->getXMLContent());
                                break;
                }
                if(!$parseOk
                   && (xml_get_error_code($a_xml_parser) != XML_ERROR_NONE))
                {
                        $errorCode = xml_get_error_code($a_xml_parser);
                        $line = xml_get_current_line_number($a_xml_parser);
                        $col = xml_get_current_column_number($a_xml_parser);                    
                        $this->handleError("XML Parse Error: ".xml_error_string($errorCode)." at line ".$line.", col ". $col . " (Code: ".$errorCode.")" ,$this->ilias->error_obj->FATAL);
                }
                return true;
                                
        }

Here is the call graph for this function:

Here is the caller graph for this function:

ilSaxParser::setHandlers ( a_xml_parser  ) 
ilSaxParser::setOptions ( a_xml_parser  ) 

set parser options

private

Definition at line 169 of file class.ilSaxParser.php.

Referenced by ilnetucateResponse::startParsing(), and startParsing().

        {
                xml_parser_set_option($a_xml_parser,XML_OPTION_CASE_FOLDING,false);
        }

Here is the caller graph for this function:

ilSaxParser::setThrowException ( throwException  ) 

set error handling

Parameters:
$error_handler 

Definition at line 261 of file class.ilSaxParser.php.

References $throwException.

        {
                $this->throwException = $throwException;
        }

ilSaxParser::setXMLContent ( a_xml_content  ) 
ilSaxParser::startParsing (  ) 

stores xml data in array

private

Exceptions:
ilSaxParserException or ILIAS Error

Reimplemented in ilGroupImportParser, ilStyleImportParser, ilnetucateResponse, ilCategoryImportParser, ilForumImportParser, ilContObjParser, ilSCORMPackageParser, ilXMLChecker, ilMailImportParser, ilQTIParser, SurveyImportParser, SurveyImportParserPre38, and ilUserImportParser.

Definition at line 125 of file class.ilSaxParser.php.

References createParser(), freeParser(), getInputType(), handleError(), openXMLFile(), parse(), setHandlers(), and setOptions().

Referenced by ilModuleReader::getModules(), ilServiceReader::getServices(), ilFileXMLParser::start(), and ilExerciseXMLParser::start().

        {
                $xml_parser = $this->createParser();
                $this->setOptions($xml_parser);
                $this->setHandlers($xml_parser);

                switch($this->getInputType())
                {
                        case 'file':
                                $fp = $this->openXMLFile();
                                $this->parse($xml_parser,$fp);
                                break;

                        case 'string':
                                $this->parse($xml_parser);
                                break;

                        default:
                                $this->handleError("No input type given. Set filename in constructor or choose setXMLContent()",
                                                                                 $this->ilias->error_obj->FATAL);
                                break;
                }
                $this->freeParser($xml_parser);
        }

Here is the call graph for this function:

Here is the caller graph for this function:


Field Documentation

ilSaxParser::$ilias
ilSaxParser::$input_type = null

Definition at line 46 of file class.ilSaxParser.php.

ilSaxParser::$lng
ilSaxParser::$throwException = false
ilSaxParser::$xml_content = ''

Definition at line 54 of file class.ilSaxParser.php.

ilSaxParser::$xml_file

Definition at line 75 of file class.ilSaxParser.php.


The documentation for this class was generated from the following file: