#!/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]); }