Blame doc/UsingPerlSAX.pod

Packit d27c7e
=head1 Using PerlSAX
Packit d27c7e
Packit d27c7e
Working with PerlSAX involves using two classes (packages), a PerlSAX
Packit d27c7e
parser that generates parsing events and a class that you write that
Packit d27c7e
will receive those parsing events, the ``handler''.  This guide will
Packit d27c7e
use the XML::Parser::PerlSAX parser that uses Clark Cooper's
Packit d27c7e
XML::Parser module.
Packit d27c7e
Packit d27c7e
The handler class implements the PerlSAX handler methods that you are
Packit d27c7e
interested in.  The following example, MyHandler.pm, prints a message
Packit d27c7e
every time an element starts or ends:
Packit d27c7e
Packit d27c7e
    package MyHandler;
Packit d27c7e
Packit d27c7e
    sub new {
Packit d27c7e
        my ($type) = @_;
Packit d27c7e
        return bless {}, $type;
Packit d27c7e
    }
Packit d27c7e
Packit d27c7e
    sub start_element {
Packit d27c7e
        my ($self, $element) = @_;
Packit d27c7e
Packit d27c7e
        print "Start element: $element->{Name}\n";
Packit d27c7e
    }
Packit d27c7e
Packit d27c7e
    sub end_element {
Packit d27c7e
        my ($self, $element) = @_;
Packit d27c7e
Packit d27c7e
        print "End element: $element->{Name}\n";
Packit d27c7e
    }
Packit d27c7e
Packit d27c7e
    1;
Packit d27c7e
Packit d27c7e
To use your handler you will need to have a script, myhandler.pl, that
Packit d27c7e
loads and creates your handler and the parser, and then calls the
Packit d27c7e
parser to parse the XML instance and send events to your handler:
Packit d27c7e
Packit d27c7e
    use XML::Parser::PerlSAX;
Packit d27c7e
    use MyHandler;
Packit d27c7e
Packit d27c7e
    my $my_handler = MyHandler->new;
Packit d27c7e
    my $parser = XML::Parser::PerlSAX->new( Handler => $my_handler );
Packit d27c7e
Packit d27c7e
    foreach my $instance (@ARGV) {
Packit d27c7e
        $parser->parse(Source => { SystemId => $instance });
Packit d27c7e
    }
Packit d27c7e
Packit d27c7e
Given this XML instance, myhandler.xml:
Packit d27c7e
Packit d27c7e
    
Packit d27c7e
Packit d27c7e
    <article>
Packit d27c7e
    <title>Using PerlSAX</title>
Packit d27c7e
    <paragraph>Working with PerlSAX ...</paragraph>
Packit d27c7e
    </article>
Packit d27c7e
Packit d27c7e
Running myhandler.pl like this:
Packit d27c7e
Packit d27c7e
    perl myhandler.pl myhandler.xml
Packit d27c7e
Packit d27c7e
will produce this output:
Packit d27c7e
Packit d27c7e
    Start element: article
Packit d27c7e
    Start element: title
Packit d27c7e
    End element: title
Packit d27c7e
    Start element: paragraph
Packit d27c7e
    End element: paragraph
Packit d27c7e
    End element: article
Packit d27c7e
Packit d27c7e
=head2 For More Information
Packit d27c7e
Packit d27c7e
PerlSAX.pod describes the PerlSAX interface.  Each parser module
Packit d27c7e
describes it's individual capabilities.  XML::Parser::PerlSAX is the
Packit d27c7e
most commonly used PerlSAX implementation.
Packit d27c7e
Packit d27c7e
The files described in this doc are in the `examples' directory.  A
Packit d27c7e
more complete implementation of the very simple handler above is in
Packit d27c7e
the module XML::Handler::Sample.  Other, more complex handlers are in
Packit d27c7e
the XML::Handler directory as well.
Packit d27c7e
Packit d27c7e
Another hands-on doc for PerlSAX is the XML-Parser-and-PerlSAX.pod.
Packit d27c7e
This doc describes the difference between and the purpose of PerlSAX
Packit d27c7e
with respect to XML::Parser.
Packit d27c7e
Packit d27c7e
This document was inspired by and uses the code examples from David
Packit d27c7e
Megginson's ``Quick Start for SAX Application Writers.''
Packit d27c7e
<http://www.megginson.com/SAX/quickstart.html>