public function parse() {
		if($this->bParsed) {
			return;
		}

		if ($this->replacements) {
            // We cannot rely of html_entity_decode,
            // because it would replace &amp; and &lt; as well,
            // whereas we need to keep them unmodified.
            // We must do it manually, with a modified hardcopy
            // of PHP 5.4+ 's get_html_translation_table(ENT_XHTML)
            $this->source = XMLEntityTransformer::replace($this->source);
		}
		
		$this->xmlParser = xml_parser_create('UTF-8');
		xml_parser_set_option($this->xmlParser, XML_OPTION_CASE_FOLDING, false);
		xml_set_object($this->xmlParser, $this);
		xml_set_element_handler($this->xmlParser, 'openTagHandler', 'closeTagHandler');
		xml_set_character_data_handler($this->xmlParser,'cdataHandler');

		//Prepare the detection of the very first tag, in order to compute
		//the offset in XML string as regarded by the parser.
		$this->firstOpening = true;

		try {
            $bSuccess = xml_parse($this->xmlParser, $this->source);
        } catch (RequiredAttributeException $ex) {
		    throw $ex->setFile($this->filename);
        }

        if ($bSuccess) {
            $errMsg = '';
            $lineNumber = 0;
        } else {
			$errMsg = xml_error_string(xml_get_error_code($this->xmlParser));
			$lineNumber = xml_get_current_line_number($this->xmlParser);
			if(count($this->stack)) {
				$lastElement = $this->stack[count($this->stack) - 1];
				if($lastElement instanceof ViewElementTag) {
					$errMsg .= '. Last element: ' . $lastElement->getTagName() . '(' . $lineNumber . ')';
				}
			}
		}

		xml_parser_free($this->xmlParser);
		$this->bParsed = $bSuccess;

		if(! $bSuccess ) {
			throw new XMLParsingException(
					$errMsg,
					$lineNumber);
		}

		// Store a serialized version of the parsed tree, if successfully parsed,
        // and if we've got a cache path.
        if ( ($this->cachePath) && ($this->filename !== null) && (! $this->unserialized) ) {
            $cacheFile = $this->makeCacheFilename($this->cachePath, $this->templatesRoot, $this->filename, true);
            file_put_contents($cacheFile, serialize($this));
        }


    }
public function parse() {
		if($this->bParsed) {
			return;
		}

		if ($this->replacements) {
            // We cannot rely of html_entity_decode,
            // because it would replace &amp; and &lt; as well,
            // whereas we need to keep them unmodified.
            // We must do it manually, with a modified hardcopy
            // of PHP 5.4+ 's get_html_translation_table(ENT_XHTML)
            $this->source = XMLEntityTransformer::replace($this->source);
		}
		
		$this->xmlParser = xml_parser_create('UTF-8');
		xml_parser_set_option($this->xmlParser, XML_OPTION_CASE_FOLDING, false);
		xml_set_object($this->xmlParser, $this);
		xml_set_element_handler($this->xmlParser, 'openTagHandler', 'closeTagHandler');
		xml_set_character_data_handler($this->xmlParser,'cdataHandler');

		//Prepare the detection of the very first tag, in order to compute
		//the offset in XML string as regarded by the parser.
		$this->firstOpening = true;

		try {
            $bSuccess = xml_parse($this->xmlParser, $this->source);
        } catch (RequiredAttributeException $ex) {
		    throw $ex->setFile($this->filename);
        }

        if ($bSuccess) {
            $errMsg = '';
            $lineNumber = 0;
        } else {
			$errMsg = xml_error_string(xml_get_error_code($this->xmlParser));
			$lineNumber = xml_get_current_line_number($this->xmlParser);
			if(count($this->stack)) {
				$lastElement = $this->stack[count($this->stack) - 1];
				if($lastElement instanceof ViewElementTag) {
					$errMsg .= '. Last element: ' . $lastElement->getTagName() . '(' . $lineNumber . ')';
				}
			}
		}

		xml_parser_free($this->xmlParser);
		$this->bParsed = $bSuccess;

		if(! $bSuccess ) {
			throw new XMLParsingException(
					$errMsg,
					$lineNumber);
		}

		// Store a serialized version of the parsed tree, if successfully parsed,
        // and if we've got a cache path.
        if ( ($this->cachePath) && ($this->filename !== null) && (! $this->unserialized) ) {
            $cacheFile = $this->makeCacheFilename($this->cachePath, $this->templatesRoot, $this->filename, true);
            file_put_contents($cacheFile, serialize($this));
        }


    }
public function parse ( ) { if ( $ this -> bParsed ) { return ; } if ( $ this -> replacements ) { // We cannot rely of html_entity_decode, // because it would replace &amp; and &lt; as well, // whereas we need to keep them unmodified. // We must do it manually, with a modified hardcopy // of PHP 5.4+ 's get_html_translation_table(ENT_XHTML) $ this -> source = XMLEntityTransformer :: replace ( $ this -> source ) ; } $ this -> xmlParser = xml_parser_create ( 'UTF-8' ) ; xml_parser_set_option ( $ this -> xmlParser , XML_OPTION_CASE_FOLDING , false ) ; xml_set_object ( $ this -> xmlParser , $ this ) ; xml_set_element_handler ( $ this -> xmlParser , 'openTagHandler' , 'closeTagHandler' ) ; xml_set_character_data_handler ( $ this -> xmlParser , 'cdataHandler' ) ; //Prepare the detection of the very first tag, in order to compute //the offset in XML string as regarded by the parser. $ this -> firstOpening = true ; try { $ bSuccess = xml_parse ( $ this -> xmlParser , $ this -> source ) ; } catch ( RequiredAttributeException $ ex ) { throw $ ex -> setFile ( $ this -> filename ) ; } if ( $ bSuccess ) { $ errMsg = '' ; $ lineNumber = 0 ; } else { $ errMsg = xml_error_string ( xml_get_error_code ( $ this -> xmlParser ) ) ; $ lineNumber = xml_get_current_line_number ( $ this -> xmlParser ) ; if ( count ( $ this -> stack ) ) { $ lastElement = $ this -> stack [ count ( $ this -> stack ) - 1 ] ; if ( $ lastElement instanceof ViewElementTag ) { $ errMsg .= '. Last element: ' . $ lastElement -> getTagName ( ) . '(' . $ lineNumber . ')' ; } } } xml_parser_free ( $ this -> xmlParser ) ; $ this -> bParsed = $ bSuccess ; if ( ! $ bSuccess ) { throw new XMLParsingException ( $ errMsg , $ lineNumber ) ; } // Store a serialized version of the parsed tree, if successfully parsed, // and if we've got a cache path. if ( ( $ this -> cachePath ) && ( $ this -> filename !== null ) && ( ! $ this -> unserialized ) ) { $ cacheFile = $ this -> makeCacheFilename ( $ this -> cachePath , $ this -> templatesRoot , $ this -> filename , true ) ; file_put_contents ( $ cacheFile , serialize ( $ this ) ) ; } }
Parse source.
@throws RequiredAttributeException
@throws XMLParsingException
Parse source .