1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
package HTTP::OAI::SAX::Base;
@ISA = qw( XML::SAX::Base );
use strict;
sub toString
{
my $str = shift->dom->toString( 1 );
utf8::decode($str);
return $str;
}
sub parse_string
{
my( $self, $string ) = @_;
my $parser = XML::LibXML::SAX->new(
Handler => HTTP::OAI::SAX::Text->new(
Handler => $self,
)
);
$parser->parse_string( $string );
}
sub parse_file
{
my( $self, $fh ) = @_;
my $parser = XML::LibXML::SAX->new(
Handler => HTTP::OAI::SAX::Text->new(
Handler => $self,
)
);
$parser->parse_file( $fh );
}
sub generate
{
my( $self, $driver ) = @_;
# override this
}
sub dom {
my $self = shift;
if( my $dom = shift ) {
my $driver = XML::LibXML::SAX::Parser->new(
Handler=>HTTP::OAI::SAXHandler->new(
Handler=>$self
));
$driver->generate($dom);
} else {
my $driver = HTTP::OAI::SAX::Driver->new(
Handler => my $builder = XML::LibXML::SAX::Builder->new()
);
$driver->start_oai_pmh();
$self->generate( $driver );
$driver->end_oai_pmh();
return $builder->result;
}
}
1;
|