Buenas tardes,
Ya me solucionaste en su día el problema que tenía al recorrer los XML con Perl.
Ahora tengo la siguiente pregunta: tengo este programa que me recorre un XML para ir actualizando una base de datos:
Using perl Syntax Highlighting
$pubID
= "http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=gene&id="
. $pubID;
#my $pubIP = 1;
my $xml = XML::Smart->new($pubID);
my $sth1;
my $alias;
for my $docsum ( @{ $xml->{eSummaryResult}->{DocSum} } ) {
print $docsum->{Id}, "\n";
$alias = $docsum->{Item}( 'Name', 'eq', 'OtherAliases' );
$sth1
= $dbh->prepare('UPDATE gene_info_21 SET Alias = ? WHERE GeneID = ?')
or die( "Couldn't prepare statement: " . $dbh->errstr );
$sth1->execute( $alias, $docsum->{Id} )
or die( "Couldn't execute statement: " . $sth1->errstr );
}
Coloreado en 0.002 segundos, usando
GeSHi 1.0.8.4
Resulta que hay veces que me da error cuando abro el xml, o cuando lo empiezo a recorrer, supongo que porque el xml no estará bien formado. El caso es que me da un error el perl y me para de recorrer el xml. ¿Hay alguna forma de capturar ese error y que siga con la ejecución del programa?
Este trozo de código que te he pasado está dentro de un bucle y voy llamando abriendo un xml diferente en cada iteración, lo que quiero es que si me da error en un xml, siga a la siguiente iteración del bucle y no pare la ejecución, ya que aunque no me actualice los datos que contiene el xml que ha dado error, como son pocos, me da igual. En la siguiente actualización ya se hará bien.
Espero haberme explicado bien, gracias por la ayuda.