#use Test::More qw( no_plan); use Test::More tests=>6; use strict; use warnings; use Data::Dumper; BEGIN { use_ok 'XML::Handler::ExtOn'; use_ok 'XML::Filter::SAX1toSAX2'; use_ok 'XML::Parser::PerlSAX'; use_ok 'XML::SAX::Writer'; } sub create_parser { my $name = shift; my $xml = shift; my $str1; my $w1 = XML::SAX::Writer->new( Output => \$str1 ); my $psax_filter = $name->new( Handler => $w1 ); my $sax2_filter = XML::Filter::SAX1toSAX2->new( Handler => $psax_filter ); my $parser = XML::Parser::PerlSAX->new( Handler => $sax2_filter ); $parser->parse( Source => { String => $xml } ); return $psax_filter, \$str1; } sub create_parser_no_parse { my $name = shift; my $str1; my $w1 = XML::SAX::Writer->new( Output => \$str1 ); my $psax_filter = $name->new( Handler => $w1 ); return $psax_filter, \$str1; } my $str; my ( $filter, $res ) = create_parser_no_parse('MyHandler1'); $filter->start_document; my $s_elem = $filter->mk_element("a") ->add_content( $filter->mk_from_xml("

"), $filter->mk_cdata(\"00000"), $filter->mk_characters("**")); $filter->start_element($s_elem); $filter->start_cdata( ); $filter->characters( { Data => "asdasdad" } ); $filter->end_cdata(); $filter->end_element(); $filter->end_document; is ( '00000asdasdad', $filter->{CDTAAAA}, 'test cd_data'); is ( '**', $filter->{CHARS}, 'test characters'); #diag $$res; #diag $filter->{CDTAAAA}; exit; package MyHandler1; use base 'XML::Handler::ExtOn'; use strict; use warnings; sub on_start_element { my ( $self, $elem ) = @_; return $elem; } sub on_cdata { my $self = shift; my $elem = shift; my $string = shift; $self->{CDTAAAA} .= $string; return $string } sub on_characters { my $self = shift; my $elem = shift; my $string = shift; $self->{CHARS} .= $string; return $string }