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