XML-Writer-Lazy
view release on metacpan or search on metacpan
else {
push( @attributes, [ $attr, $attributes{$attr} ] );
}
}
@attributes = map {@$_} sort { $a->[0] cmp $b->[0] } @attributes;
$writer->startTag( $element->{'Name'}, @attributes );
return;
}
sub end_element {
my ( $self, $element ) = @_;
$writer->endTag( $element->{'Name'} );
return;
}
sub characters {
my ( $self, $characters ) = @_;
$writer->characters( $characters->{'Data'} );
return;
}
sub processing_instruction {
my ( $self, $pi ) = @_;
$writer->pi( $pi->{'Target'}, $pi->{'Data'} );
return;
}
sub comment {
my ( $self, $comment ) = @_;
$comment->{'Data'} ||= '';
$comment->{'Data'} =~ s/^ //;
$comment->{'Data'} =~ s/ $//;
$writer->comment( $comment->{'Data'} );
return;
}
sub start_dtd {
my ( $self, $dtd ) = @_;
$writer->doctype( $dtd->{'Name'}, $dtd->{'PublicId'},
$dtd->{'SystemId'} );
return;
}
sub start_prefix_mapping {
my ( $self, $prefix_mapping ) = @_;
$writer->addPrefix( $prefix_mapping->{'NamespaceURI'},
$prefix_mapping->{'Prefix'} );
return;
}
# Allegedly passes through some kind of locator object, but appears
# to essentially be a no-op? ¯\_(ã)_/¯
sub set_document_locator {
my $self = shift;
my $data = shift;
return;
}
# No work needed, as the insides will already be magically quoted
sub start_cdata { return; }
sub end_cdata { return; }
sub not_implemented {
my ($event) = @_;
return <<"MSG";
The XML passed to 'lazily()' triggered a `$event` SAX event,
but XML::Writer::Lazy doesn't yet handle those. You can either simplify your
input XML or alternatively you could monkey-patch `XML::Writer::Lazy::Handler`
to add a `$event()` handler method to it.
MSG
}
sub skipped_entity {
my $self = shift;
my $data = shift;
return croak( not_implemented('skipped_entity') );
}
sub entity_reference {
my $self = shift;
my $data = shift;
return croak( not_implemented('entity_reference') );
}
sub notation_decl {
my $self = shift;
my $data = shift;
return croak( not_implemented('notation_decl') );
}
sub unparsed_entity_decl {
my $self = shift;
my $data = shift;
return croak( not_implemented('unparsed_entity_decl') );
}
sub element_decl {
my $self = shift;
my $data = shift;
return croak( not_implemented('element_decl') );
}
sub attlist_decl {
my $self = shift;
my $data = shift;
return croak( not_implemented('attlist_decl') );
}
sub doctype_decl {
my $self = shift;
my $data = shift;
return croak( not_implemented('doctype_decl') );
}
sub entity_decl {
my $self = shift;
my $data = shift;
return croak( not_implemented('entity_decl') );
}
sub attribute_decl {
( run in 3.775 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )