When I run the below mentioned code I don't get anything on stdout, I don't understand why parXML function not parsing each file and outputting data, undermentioned code this is just a part of whole script. Also my script does not shows any syntax error,it runs through with no output,Please help thanks!!
I want to output specific rows from xml stored in multiple files
I have stored files in an array
@array = `ls file* | awk '{print \$0}'`;result of above code I am getting
file1 file2
Now I pass each file using foreach loop to parXML function
foreach (@array) { parXML($_); }
parXML function
sub parXML { my $file = shift; #print "$file\n"; my $twig=XML::Twig->new(twig_handlers => {IP_ADDRESS => \&ip, COM= +>\&co}); $twig->set_pretty_print('indented'); $twig->parsefile($file); sub ip { my($twig, $ip)= @_; print "Target:".$ip->text."\n"; twig->print; $twig->purge; } sub co { my($twig, $co)= @_; $co->print; print "\n\n"; $twig->purge; } }
xml stored in file1 and file2
<REP>abc</REP> <ING>ip</ING> <IP_ADDRESS>192.168.67.16</IP_ADDRESS> <COM> <DS> <N>1</N> </DS> </COM> <LIST>ac</LIST>
<REP>ab</REP> <ING>ip</ING> <IP_ADDRESS>192.168.67.110</IP_ADDRESS> <COM> <DS> <N>5</N> </DS> </COM> <LIST>gn</LIST>
Result I am looking for in output
<IP_ADDRESS>192.168.67.16</IP_ADDRESS> <COM> <DS> <N>1</N> </DS> </COM>
<IP_ADDRESS>192.168.67.110</IP_ADDRESS> <COM> <DS> <N>5</N> </DS> </COM>
In reply to Processing xml data in multiple files using XML::Twig and outputting in a file by pinnacle
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |