###################################################################### # # Copyright 1999-2005 The Apache Software Foundation. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. ###################################################################### # # DOMCount # # This sample is modeled after its XML4C counterpart. You give it an # XML file and it parses it into a DOM tree and counts the nodes. # ###################################################################### use strict; use XML::Xerces; use Getopt::Long; use Benchmark; use vars qw(%OPTIONS); # # Read and validate command line args # my $USAGE = <new(); $parser->setValidationScheme ($validate); $parser->setDoNamespaces ($namespace); $parser->setCreateEntityReferenceNodes(1); $parser->setDoSchema ($schema); my $error_handler = XML::Xerces::PerlErrorHandler->new(); $parser->setErrorHandler($error_handler); my $t0 = new Benchmark; eval { $parser->parse ($file); }; XML::Xerces::error($@) if ($@); my $doc = $parser->getDocument (); my $element_count = $doc->getElementsByTagName("*")->getLength(); my $t1 = new Benchmark; my $td = timediff($t1, $t0); print STDOUT "$file: duration: ", timestr($td), "\n"; print STDOUT "\t($element_count elems)\n"; END { # NOTICE: We must now explicitly call XMLPlatformUtils::Terminate() # when the module is unloaded. Xerces.pm no longer does this for us # # XML::Xerces::XMLPlatformUtils::Terminate(); } exit(0);