#!/usr/bin/perl
use warnings;
use strict;
use Carp;
use File::Find;
use File::Spec::Functions qw( canonpath );
use XML::LibXML::Reader;
use Data::Dumper;
my $INFO;
my @ARGV ="C:/file/dir";
die "Need directories\n" unless @ARGV;
find(
sub {
my $file = $_;
#my $path = canonpath $File::Find::name;
my $path =$_;
return unless -f $path;
return unless $file =~ /[.]xml\z/i;
extract_information($path);
return;
},
@ARGV
);
sub extract_information {
my( $path)=@_;
my $ret = open my $xmlin, '<', $path;
unless ($ret) {
carp "Cannot open '$path': $!";
return;
}
my $reader = XML::LibXML::Reader->new(IO => $xmlin);
unless ($reader) {
carp "Cannot create reader using '$path'";
return;
}
while ($reader->nextElement('shipto')) {
$INFO = $reader->readOuterXml();
print "$INFO\n";
}
close $xmlin
or carp "Cannot close '$path': $!";
return;
}
but I have two problem in this script
1) I am extracting information from all XML files Having "shiporder" Node element, But in one XML file I have data with some other Node element "definition" I am not extracting that information, What should I do if I want to extract that information and store in the same variable.
2) After extracting all information That is stored in a $INFO varible, I want to store that $INFO variable information in one xml file how can I do that one. Please help me.
|