#!/usr/bin/perl -w
# $Id: bench_sax_base_libxml_replace,v 1.2 2003/09/19 18:52:26 mrodrigu Exp $
use strict;
use simple_benchmark; # to get memory size
use XML::LibXML::SAX;
use XML::Filter::BufferText;     # to buffer all character events
use XML::SAX::Machines qw(:all); # to pipe the 2 SAX handlers
use XML::SAX::Writer;
use Getopt::Long;

my( $in_file);
GetOptions( 'in_file=s' =>\$in_file); 
$in_file ||= 'test.xml';

my @filters= qw( XML::LibXML::SAX XML::Filter::BufferText OutputMessage XML::SAX::Writer);

Pipeline( @filters)->parse_uri('test.xml');

package OutputMessage;
use base qw( XML::SAX::Base);

my $in_message;
my $message_nb;
my $prefix_printed=0;

sub start_element { if( $_[1]->{Name} eq 'message') { $in_message=1; } 
		                $_[0]->SUPER::start_element( $_[1]); 
								  }
sub characters    { if( $in_message)
		                  { $message_nb++;
												$_[1]->{Data}= "[message $message_nb] " . $_[1]->{Data};
									    }
                     $_[0]->SUPER::characters( $_[1]);
                  }
sub end_element   { if( $_[1]->{Name} eq 'message') { $in_message=0; }
									  $_[0]->SUPER::end_element( $_[1]); 
							    }


