<?php
	$this->analyseur = xml_parser_create();
	xml_parser_set_option($this->analyseur, XML_OPTION_CASE_FOLDING, true);
/* ATTENTION  PEnser a remplacer l'utilisation de (&$this) derecier en php5 */
	xml_set_object($this->analyseur, &$this);
	xml_set_element_handler($this->analyseur, "debutBalise", "finBalise");
	xml_set_character_data_handler($this->analyseur, "texte");
	xml_set_processing_instruction_handler($this->analyseur, "gestionnaireDePI");
	xml_set_external_entity_ref_handler($this->analyseur, "gestionnaireDeRefExterne");

	if (!($fp = @fopen($this->fichierXml, "r"))) {
		if (!isset($CSS_AFTER_BODY)) return ("impossible d'ouvrir le fichier XML: ".$this->fichierXml);
	}
	while ($data = fread($fp, 4096)) {
		if ( !xml_parse( $this->analyseur, $data, feof($fp) ) ) {
			/* ratatpe balise lié more*/
			if( $this->more ==true){
				$ar=$this->recup_balisef('recup');
				$ab=$this->recup_bf_cpt;

				while ($r=each($ab))
					if (  $this->recup_bf[$r['value']]>0){
						$this->recup_balisef('ferme',$r['value']);
						print($this->balisesFermantes[$r['value']]);
					}
			}

		if (!isset($CSS_AFTER_BODY)) printf( "erreur XML %s a la ligne: %d\n\n", xml_error_string(xml_get_error_code( $this->analyseur ) ),xml_get_current_line_number($this->analyseur) ) ;

		} else {
			/* ratatpe balise lié more*/
			if( isset($this->more) && $this->more ==true){
				$ar=$this->recup_balisef('recup');
				$ab=$this->recup_bf_cpt;
				while ($r=each($ab))
					if (  $this->recup_bf[$r['value']]>0){
						$this->recup_balisef('ferme',$r['value']);
						print($this->balisesFermantes[$r['value']]);
					}
			}
		}
	}
	fclose($fp);
	xml_parser_free($this->analyseur);
?>