XML::LibXML::SAX::Parser - LibXML DOM based SAX Parser
my $handler = MySAXHandler->new(); my $parser = XML::LibXML::SAX::Parser->new(Handler => $handler); $parser->parse_uri("foo.xml");
This class allows you to generate SAX2 events using LibXML. Note that this is not a stream based parser, instead it parses documents into a DOM and traverses the DOM tree. The reason being that libxml2's stream based parsing is extremely primitive, and would require an extreme amount of work to allow SAX2 parsing in a stream manner.
WARNING WARNING WARNING
This is NOT a streaming SAX parser. As I said above, this parser reads the entire document into a DOM and serialises it. Some people couldn't read that in the paragraph above so I've added this warning.
There are many reasons, but if you want to write a proper SAX parser using the libxml2 library, please feel free and send it along to me.
The API is exactly the same as any other Perl SAX2 parser. See XML::SAX::Intro for details.
Aside from the regular parsing methods, you can access the DOM tree traverser directly, using the generate() method:
my $parser = XML::LibXML::SAX::Parser->new(...); $parser->generate($dom_tree);
This is useful for serializing DOM trees, for example that you might have done prior processing on, or that you have as a result of XSLT processing.