The UNIX and Linux Forums  
Hello and Welcome from United States to the UNIX and Linux Forums! Thank You for Visiting and Joining Our Global Community.

Go Back   The UNIX and Linux Forums > Top Forums > Shell Programming and Scripting
.
google unix.com




View Single Post in the UNIX and Linux Forums - Click on the Thread or Permalink to View Entire Thread -->
  #4 (permalink)  
Old 07-10-2009
summer_cherry summer_cherry is offline Forum Advisor  
Registered User
  
 

Join Date: Jun 2007
Location: Beijing China
Posts: 1,082
more formally, perl can handle XML document with many availiable module.

You may try below to see the result
Code:
use XML::Parser;
my $file = 'a.xml';
my ($flag,$index,@arr,%hash)=(0,-1);
sub start_handler
{
    my $expat = shift; 
    my $element = shift;
    if($element eq 'cisco:name'){
			$index++;
		}
		else{
			if($element eq 'cisco:cpt'){
				$flag=1
			}
			else{
				$flag=0;				
			}
		}
}
sub char_handler
{
    my ($p, $data) = @_;
    if( ($flag eq '1') and  !($data =~ /^\s*$/)){
    	$arr[$index]++;
    	$hash{$index}.="  ".$data;
    }
}
my $parser = new XML::Parser(ErrorContext => 2);
$parser->setHandlers(Start => \&start_handler,
                     Char  => \&char_handler);
$parser->parsefile($file);
for(my $i=0;$i<=$#arr;$i++){
	print $arr[$i],"\n";
	print $hash{$i},"\n";
	print "--------\n";
}