in reply to Open a zip file content question!

#!/usr/bin/perl -- use strict; use warnings; use Archive::Zip; use XML::XPath; use autodie qw' chdir unlink '; Main( @ARGV ); exit( 0 ); sub Main { ( undef, my $zipfile ) = Archive::Zip::tempFile(); my $fillThisFile = "$zipfile-junk.xml"; { my $zip = Archive::Zip->new(); $zip->addString('c' x 300, 'bunchOfCs.txt'); $zip->addString(q~<r><a href="#">#</a> <a href="#1">#1</a></r>~, 'test.xml'); $zip->writeToFileNamed( $zipfile ); } { my $zip = Archive::Zip->new( $zipfile ); my @xml = $zip->membersMatching( '.*\.xml' ); $zip->extractMember( $xml[0] , $fillThisFile ); my $xml = XML::XPath->new(filename => $fillThisFile); for my $node ( $xml->find('//a')->get_nodelist) { print $node->toString ,"\n"; } } unlink $zipfile, $fillThisFile; } __END__ <a href="#">#</a> <a href="#1">#1</a>

Replies are listed 'Best First'.
Re^2: Open a zip file content question!
by Anonymous Monk on Mar 04, 2011 at 15:05 UTC
    Thanks to this last posting, I got the problem solved!!!
    #!/usr/bin/perl use strict; use warnings; use Archive::Zip; use XML::XPath; my @numberstocheck = qw(112334 999888 222333 999888 0008877 003344 122 +2334 00009 004443 999888); my $zipfile = "test.zip"; my $fillThisFile = "$zipfile-junk.xml"; my $zip = Archive::Zip->new( $zipfile ) || die; my @xml = $zip->membersMatching( '.*\.XML' ); $zip->extractMember( $xml[0] , $fillThisFile ); my $xmlfile = XML::XPath->new(filename => $fillThisFile); foreach my $row ($xmlfile->findnodes('/alllist')) { my $nodeset = $row->find('phnumbers'); foreach my $node ( $nodeset->get_nodelist ) { my $numbers = $node->find( 'numbers')->string_value; print "\n 19 - $numbers \n"; foreach (@numberstocheck) { if (/^($numbers)/g) { print "$numbers - ".$_."\n"; } } } }

    Thanks a lot for that!