XML-Filter-Hekeln

 view release on metacpan or  search on metacpan

Hekeln.pm  view on Meta::CPAN

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);

Hekeln.pm  view on Meta::CPAN

	}
	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);
}

sdsd.xml  view on Meta::CPAN

	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
>

test.pl  view on Meta::CPAN

	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 )