home *** CD-ROM | disk | FTP | other *** search
/ PC Professionell 2004 December / PCpro_2004_12.ISO / files / webserver / tsw / TSW_3.4.0.exe / Apache2 / perl / SAX.pm < prev    next >
Encoding:
Perl POD Document  |  2003-08-19  |  2.0 KB  |  75 lines

  1. # $Id: SAX.pm,v 1.6 2003/08/19 21:06:31 phish Exp $
  2. # Copyright (c) 2001-2002, AxKit.com Ltd. All rights reserved.
  3. package XML::LibXML::SAX;
  4.  
  5. use strict;
  6. use vars qw($VERSION @ISA);
  7.  
  8. $VERSION = '1.00';
  9.  
  10. use XML::LibXML;
  11. use XML::SAX::Base;
  12.  
  13. @ISA = qw(XML::SAX::Base);
  14.  
  15. use Carp;
  16. use IO::File;
  17.  
  18. sub _parse_characterstream {
  19.     my ( $self, $fh ) = @_;
  20.     # this my catch the xml decl, so the parser won't get confused about
  21.     # a possibly wrong encoding.
  22.     croak( "not implemented yet" );
  23. }
  24.  
  25. sub _parse_bytestream {
  26.     my ( $self, $fh ) = @_;
  27.     $self->{ParserOptions}{LibParser}      = XML::LibXML->new;
  28.     $self->{ParserOptions}{ParseFunc}      = \&XML::LibXML::parse_fh;
  29.     $self->{ParserOptions}{ParseFuncParam} = $fh;
  30.     return $self->_parse;
  31. }
  32.  
  33. sub _parse_string {
  34.     my ( $self, $string ) = @_;
  35. #    $self->{ParserOptions}{LibParser}      = XML::LibXML->new;
  36.     $self->{ParserOptions}{LibParser}      = XML::LibXML->new()     unless defined $self->{ParserOptions}{LibParser};
  37.     $self->{ParserOptions}{ParseFunc}      = \&XML::LibXML::parse_string;
  38.     $self->{ParserOptions}{ParseFuncParam} = $string;
  39.     return $self->_parse;
  40. }
  41.  
  42. sub _parse_systemid {
  43.     my $self = shift;
  44.     $self->{ParserOptions}{LibParser}      = XML::LibXML->new;
  45.     $self->{ParserOptions}{ParseFunc}      = \&XML::LibXML::parse_file;
  46.     $self->{ParserOptions}{ParseFuncParam} = shift;
  47.     return $self->_parse;
  48. }
  49.  
  50. sub parse_chunk {
  51.     my ( $self, $chunk ) = @_;
  52.     $self->{ParserOptions}{LibParser}      = XML::LibXML->new;
  53.     $self->{ParserOptions}{ParseFunc}      = \&XML::LibXML::parse_xml_chunk;
  54.     $self->{ParserOptions}{ParseFuncParam} = $chunk;
  55.     return $self->_parse;
  56. }
  57.  
  58. sub _parse {
  59.     my $self = shift;
  60.     my $args = bless $self->{ParserOptions}, ref($self);
  61.  
  62.     $args->{LibParser}->set_handler( $self );
  63.     $args->{ParseFunc}->($args->{LibParser}, $args->{ParseFuncParam});
  64.  
  65.     if ( $args->{LibParser}->{SAX}->{State} == 1 ) {
  66.         croak( "SAX Exception not implemented, yet; Data ended before document ended\n" );
  67.     }
  68.  
  69.     return $self->end_document({});
  70. }
  71.  
  72.  
  73. 1;
  74.  
  75.