in reply to Re: split an xml file into pieces
in thread split an xml file into pieces
use XML::Simple; binmode(STDOUT, ":utf8"); open (handle, "D:\\OlayNewProductCatalog_Interwoven_Products.xml"); $xml= new XML::Simple; $xdata = $xml->XMLin("D:\\OlayNewProductCatalog_Interwoven_Products.xm +l"); $data->{Product}->[0]->{ProductAttributes}; open (handle, "D:\\OlayNewProductCatalog_Interwoven_Products.xml"); $xmlstandard="<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n"; $line1; $count=0; my @prdarry=(); my $prd; while(<handle>) { if($_ =~ /(\<Product\>)(.*)/) { print "<Product>"; print $2."\n"; $prd=$2; push(@prdarry,$2); if (/(\<SeoUrl\>)(.*)(\<\/SeoUrl\>)/) { $filename=$2; chomp($filename); $filename=~ s/\s+$//; $fname=~ s/[^[:ascii:]]//g; $filename =~ tr/ /_/; $filename =~ tr/\//_/; $fname=~ s/[^[:ascii:]]//g; $filename = "$filename".".xml"; open(FILE,"\>C:\\Users\\p.a.vamsi.krishna\\Desktop\\perl\\vams +i\\files\\$filename"); print "Created $2.xml File..... \n" if(!$?); print FILE "<Product>"; print FILE $prd."\n"."\t"; } if($_ !~ (/(\<)(.*)/)||(/(.*)(\>)/)){ #print FILE "No tags data...."; $notag=$_; print FILE $2; } if($_ =~ /(.*)(\<\/Product\>)/) { print "\n\n\n"; print FILE $1; print FILE "</Product>"; } } } close(FH); close(handle);
|
|---|