You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by ja...@apache.org on 2001/05/06 01:09:24 UTC

cvs commit: xml-xerces/perl/samples SAXCount.pl

jasons      01/05/05 16:09:24

  Modified:    perl/samples SAXCount.pl
  Log:
  	* samples/SAXCount.pl (Repository):
  	uses new ErrorHandler interface
  	uses new DocumentHandler interface
  
  Revision  Changes    Path
  1.2       +29 -21    xml-xerces/perl/samples/SAXCount.pl
  
  Index: SAXCount.pl
  ===================================================================
  RCS file: /home/cvs/xml-xerces/perl/samples/SAXCount.pl,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SAXCount.pl	2001/04/13 22:23:51	1.1
  +++ SAXCount.pl	2001/05/05 23:09:24	1.2
  @@ -73,7 +73,7 @@
   #
   
   my $USAGE = "USAGE: $0 [-v][-n] file\n";
  -my $VERSION = q[$Id: SAXCount.pl,v 1.1 2001/04/13 22:23:51 jasons Exp $ ];
  +my $VERSION = q[$Id: SAXCount.pl,v 1.2 2001/05/05 23:09:24 jasons Exp $ ];
   
   getopts ('vn') && ($#ARGV == 0)	or die "$USAGE";
   -f $ARGV[0] or die "File '$ARGV[0]' does not exist!\n";
  @@ -89,22 +89,30 @@
   my $parser = XML::Xerces::SAXParser->new();
   $parser->setDoValidation ($validate);
   $parser->setDoNamespaces ($namespace);
  -my $error_handler = new XML::Xerces::perlErrorHandler;
  -$error_handler->setWarningFunction(\&XML::Xerces::warning);
  -$error_handler->setErrorFunction(\&XML::Xerces::error);
  -$error_handler->setFatalErrorFunction(\&XML::Xerces::fatal_error);
  -$parser->setErrorHandler($error_handler);
  -
  -my $element_count = 0;
  -my $ws_count = 0;
  -my $attr_count = 0;
  -my $char_count = 0;
  -my $DOCUMENT_HANDLER = XML::Xerces::perlDocumentHandler->new();
  -$DOCUMENT_HANDLER->setStartElementFunction(sub{$element_count++;});
  -$DOCUMENT_HANDLER->setIgnorableWhitespaceFunction(sub{my ($str,$len) = @_;
  -						      $ws_count += $len;});
  -$DOCUMENT_HANDLER->setCharactersFunction(sub{my ($str,$len) = @_;
  -					     $char_count += $len;});
  +my $ERROR_HANDLER = XML::Xerces::PerlErrorHandler->new();
  +$parser->setErrorHandler($ERROR_HANDLER);
  +
  +package MyDocumentHandler;
  +use strict;
  +use vars qw(@ISA);
  +@ISA = qw(XML::Xerces::PerlDocumentHandler);
  +
  +sub start_element {
  +  my $self = shift;
  +  $self->{elements}++;
  +  $self->{attrs} = 0;
  +}
  +sub characters {
  +  my ($self,$str,$len) = @_;
  +  $self->{chars} += $len;
  +}
  +sub ignorable_whitespace {
  +  my ($self,$str,$len) = @_;
  +  $self->{ws} += $len;
  +}
  +
  +package main;
  +my $DOCUMENT_HANDLER = MyDocumentHandler->new();
   $parser->setDocumentHandler($DOCUMENT_HANDLER);
   
   my $t0 = new Benchmark;
  @@ -113,10 +121,10 @@
   my $td = timediff($t1, $t0);
   
   print "$file: duration: ", timestr($td), "\n";
  -print "elems: $element_count\n"; 
  -print "attrs: $attr_count\n";
  -print "whitespace: $ws_count\n";
  -print "characters: $char_count\n";
  +print "elems: ", $DOCUMENT_HANDLER->{elements}, "\n"; 
  +print "attrs: ", $DOCUMENT_HANDLER->{attrs}, "\n";
  +print "whitespace: ", $DOCUMENT_HANDLER->{ws}, "\n";
  +print "characters: ", $DOCUMENT_HANDLER->{chars}, "\n";
   
   
   __END__
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org