package My::Appender; use XML::Filter::Merger; @ISA = qw( XML::Filter::Merger ); use strict; sub end_element { my $self = shift; if ( $self->in_master_document && ! $self->element_depth ) { XML::SAX::ParserFactory->parser( Handler => $self )->parse_string( <<'END_DOC' ); END_DOC } $self->SUPER::end_element( @_ ); } package main; use XML::SAX::Machines qw( Pipeline ); Pipeline( My::Appender => \*STDOUT )->parse_string( <<'END_DOC' ); END_DOC