use Test; BEGIN { plan tests => 1 } use XML::SAX::ExpatXS; my $handler = TestH->new(); my $parser = XML::SAX::ExpatXS->new( Handler => $handler ); my $xml =<<_xml_; koko mato roto pedo _xml_ $parser->parse_string($xml); $parser->set_feature('http://xmlns.perl.org/sax/join-character-data',0); $parser->parse_string($xml); #warn $handler->{data}; ok($handler->{data} eq '_setDL|1|1|_sd|1|1|_se|2|5|_ch|3|2|_se|4|19|_ch|7|2|_ee|7|8|_ch|8|2|_se|8|8|_ee|8|8|_ch|8|9|_ee|9|6|_ed|9|7|iso-8859-2|1.0||_setDL|1|1|_sd|1|1|_se|2|5|_ch|2|6|_ch|3|2|_se|4|19|_ch|4|20|_ch|5|13|_ch|5|14|_ch|6|13|_ch|6|14|_ch|7|2|_ee|7|8|_ch|7|9|_ch|8|2|_se|8|8|_ee|8|8|_ch|8|9|_ee|9|6|_ed|9|7|iso-8859-2|1.0||'); package TestH; #use Devel::Peek; sub new { bless {data => ''}, shift } sub set_document_locator { my ($self, $loc) = @_; #warn("setDocLoc\n"); #Dump($loc); $self->{Locator} = $loc; $self->{data} .= '_setDL|' . $loc->{LineNumber}; $self->{data} .= '|' . $loc->{ColumnNumber}; } sub start_document { my ($self, $doc) = @_; #warn("StartDoc:\n"); $self->{data} .= '|_sd|' . $self->{Locator}->{LineNumber}; $self->{data} .= '|' . $self->{Locator}->{ColumnNumber}; } sub end_document { my ($self, $doc) = @_; #warn("EndDoc:\n"); #Dump($self->{Locator}); $self->{data} .= '|_ed|' . $self->{Locator}->{LineNumber}; $self->{data} .= '|' . $self->{Locator}->{ColumnNumber}; $self->{data} .= '|' . $self->{Locator}->{Encoding}; $self->{data} .= '|' . $self->{Locator}->{XMLVersion}; $self->{data} .= '|' . $self->{Locator}->{PublicId}; $self->{data} .= '|' . $self->{Locator}->{SystemId}; } sub start_element { my ($self, $el) = @_; #warn("StartEl:\n"); $self->{data} .= '|_se|' . $self->{Locator}->{LineNumber}; $self->{data} .= '|' . $self->{Locator}->{ColumnNumber}; } sub end_element { my ($self, $el) = @_; #warn("EndEl:\n"); $self->{data} .= '|_ee|' . $self->{Locator}->{LineNumber}; $self->{data} .= '|' . $self->{Locator}->{ColumnNumber}; } sub characters { my ($self, $char) = @_; #warn("char:\n"); $self->{data} .= '|_ch|' . $self->{Locator}->{LineNumber}; $self->{data} .= '|' . $self->{Locator}->{ColumnNumber}; } sub start_prefix_mapping { my ($self, $map) = @_; #warn("StartPM:\n"); $self->{data} .= '|_sm|' . $self->{Locator}->{LineNumber}; $self->{data} .= '|' . $self->{Locator}->{ColumnNumber}; } sub end_prefix_mapping { my ($self, $map) = @_; #warn("EndPM:\n"); $self->{data} .= '|_em|' . $self->{Locator}->{LineNumber}; $self->{data} .= '|' . $self->{Locator}->{ColumnNumber}; } sub processing_instruction { my ($self, $pi) = @_; #warn("PI:\n"); $self->{data} .= '|_pi|' . $self->{Locator}->{LineNumber}; $self->{data} .= '|' . $self->{Locator}->{ColumnNumber}; }