XML::SAX::PurePerl - Pure Perl XML Parser with SAX2 interface


  use XML::Handler::Foo;
  use XML::SAX::PurePerl;
  my $handler = XML::Handler::Foo->new();
  my $parser = XML::SAX::PurePerl->new(Handler => $handler);


This module implements an XML parser in pure perl. It is written around the upcoming perl 5.8's unicode support and support for multiple document encodings (using the PerlIO layer), however it has been ported to work with ASCII/UTF8 documents under lower perl versions.

The SAX2 API is described in detail at, in the CVS archive, under libxml-perl/docs. Hopefully those documents will be in a better location soon.

Please refer to the SAX2 documentation for how to use this module - it is merely a front end to SAX2, and implements nothing that is not in that spec (or at least tries not to - please email me if you find errors in this implementation).


XML::SAX::PurePerl is slow. Very slow. I suggest you use something else in fact. However it is great as a fallback parser for XML::SAX, where the user might not be able to install an XS based parser or C library.

Currently lots, probably. At the moment the weakest area is parsing DOCTYPE declarations, though the code is in place to start doing this. Also parsing parameter entity references is causing me much confusion, since it's not exactly what I would call trivial, or well documented in the XML grammar. XML documents with internal subsets are likely to fail.

I am however trying to work towards full conformance using the Oasis test suite.


Matt Sergeant, Copyright 2001.

Please report all bugs to the Perl-XML mailing list at


This is free software. You may use it or redistribute it under the same terms as Perl 5.7.2 itself.