XML-Filter-Hekeln
view release on metacpan or search on metacpan
use vars qw($VERSION $METHODS);
$VERSION = '0.06';
$METHODS = {
start_document => 1,
end_document => 1,
doctype_decl => 1,
processing_instruction => 1,
start_element => 1,
end_element => 1,
start_cdata => 1,
end_cdata => 1,
characters => 1
};
# ---------------------------------------------------------------------------- #
sub new {
my $proto = shift;
my $self = {};
my $class = ref($proto) || $proto;
bless($self, $class);
}
return $hash;
}
sub start_document { my ($self, $param) = @_; $self->style('start_document',$param); }
sub end_document { my ($self, $param) = @_; $self->style('end_document',$param); }
sub doctype_decl { my ($self, $param) = @_; $self->style('doctype_decl',$param); }
sub processing_instruction { my ($self, $param) = @_; $self->style('processing_instruction',$param); }
sub start_element { my ($self, $param) = @_; $self->style('start_element',$param); }
sub end_element { my ($self, $param) = @_; $self->style('end_element',$param); }
sub start_cdata { my ($self, $param) = @_; $self->style('start_cdata',$param); }
sub end_cdata { my ($self, $param) = @_; $self->style('end_cdata',$param); }
sub characters { my ($self, $param) = @_; $self->style('characters',$param); }
sub style {
my ($self,$event,$param) = @_;
return unless $param;
return unless $event;
return unless $METHODS->{$event};
my $target = "*";
$target = $param->{'Name'} if $param->{'Name'};
$target = $param->{'Target'} if $param->{'Target'};
$target = $self->{Stack}[0] if ( $event eq 'characters' or
$event eq 'start_cdata' or
$event eq 'end_cdata' ) and
$self->{Flag}{$self->{Stack}[0]};
my $action = $self->{'Action'}{$event.':'.$target};
return undef unless $action;
my $hash = $param;
$hash = $param->{'Attributes'} if $event eq 'start_element';
return &$action($self,$hash);
}
code="0081"
flag="M"
name="SECTION IDENTIFICATION"
pos="010"
repr="a1"
/></segment
>
<chartest
>some characters and more</chartest
>
<cdatatest
><![CDATA[some cdata characters and more]]></cdatatest
>
></repository
>
Characters:
++ chartest
end_element:chartest
-- chartest
</ li >
characters:chartest
~Data~
start_element:cdatatest
< li >
++ cdatatest
end_element:cdatatest
-- cdatatest
</ li >
start_cdata:cdatatest
[CDATA STARTS]
end_cdata:cdatatest
[CDATA ENDS]
characters:cdatatest
~Data~
!HERE!
my $xml_file = new IO::File( '>sdsd.html' );
my $handler = new XML::Handler::YAWriter(
'Output' => $xml_file,
'Pretty' => {
'CatchEmptyElement' => 1,
'AddHiddenAttrTab' => 1,
'AddHiddenNewLine' => 1,
( run in 1.872 second using v1.01-cache-2.11-cpan-995e09ba956 )