taginfo.pl
来自「PERL语言资料 可以用于PERL程序设计」· PL 代码 · 共 74 行
PL
74 行
#!/usr/bin/perl
# Fig. 22.21: taginfo.pl
# SAX example.
use warnings;
use strict;
use XML::Parser;
my ( $file, $tag ) = @ARGV;
my $parser = new XML::Parser( ErrorContext => 2 );
$parser->setHandlers( Char => \&charHandler,
Start => \&startHandler,
End => \&endHandler );
my $depth = 0;
$parser->parsefile( $file );
sub startHandler
{
my ( $expat, $element, @attributes ) = @_;
return if ( !$element );
if ( $element eq $tag ) {
print( "\n", ' ' x $depth,
"<$tag> starts on line ", $expat->current_line(), "\n" );
$depth += 3;
print( ' ' x $depth, "Parent tag: ",$expat->current_element(),
"\n", ' ' x $depth, "Depth: ", $expat->depth(), "\n",
' ' x $depth, "Attributes: @attributes\n" );
}
elsif ( $expat->current_element() eq $tag ) {
print( ' ' x $depth, "Child: $element\n" );
}
}
sub endHandler
{
my ( $expat, $element ) = @_;
if ( $element eq $tag ) {
$depth -= 3;
print( ' ' x $depth, "<\\$element> ends on line ",
$expat->current_line(), "\n\n" );
}
}
sub charHandler
{
my ( $expat, $data ) = @_;
if ( $expat->current_element() eq $tag ) {
$data =~ s/^\s+//;
$data =~ s/\s+$//;
print( ' ' x $depth, "Data: $data\n" ) if ( $data );
}
}
##########################################################################
# (C) Copyright 2001 by Deitel & Associates, Inc. and Prentice Hall. #
# All Rights Reserved. #
# #
# DISCLAIMER: The authors and publisher of this book have used their #
# best efforts in preparing the book. These efforts include the #
# development, research, and testing of the theories and programs #
# to determine their effectiveness. The authors and publisher make #
# no warranty of any kind, expressed or implied, with regard to these #
# programs or to the documentation contained in these books. The authors #
# and publisher shall not be liable in any event for incidental or #
# consequential damages in connection with, or arising out of, the #
# furnishing, performance, or use of these programs. #
##########################################################################
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?