Parecia uma tarefa perfeita para um script em Perl. Achei então o módulo Archive::Zip, que tornou a tarefa muito mais simples do que eu antecipara.
O código abaixo percorre todos os arquivos de uma pasta, abre cada um deles e analisa o xml.
O conteúdo inteiro de cada arquivo vai para a variável $data e com ela podemos analisar o xml para decidir o que fazer, como se faz com um string qualquer.
use Archive::Zip qw( :ERROR_CODES :CONSTANTS );
my $dirname='/tmp/zips';
opendir(DIR, $dirname) or die "Can't open dir\n";
while (defined($file = readdir(DIR))) {
#evita tentar abrir "." e ".."
if(length($file)>2) {
my $zip=Archive::Zip->new();
#abre zip
$zip->read("$dirname/$file");
#lê arquivo
my $data=$zip->contents("index.xml");
#processar arquivo aqui
}
}
Já estás nos meus bookmarks!
ResponderExcluir