Bienvenido a los foros de Perl en Español, jcarranza.
Esta es una forma sencilla de hacerlo (no probado):
Using perl Syntax Highlighting
#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;
use DBI;
use XML::Simple;
my $xml_inline = q(
<datos_usuarios>
<usuario>
<id>1</id>
<nombre>ernerto</nombre>
<apellidos>guzman</apellidos>
<direccion>canarias</direccion>
<telefono>655666777</telefono>
<email>loe@ole.es</email>
<login>ernedto2</login>
<clave>ller43</clave>
</usuario>
</datos_usuarios>
);
my $xmls = XML::Simple->new;
my $xml;
eval {
$xml = $xmls->XMLin( $xml_inline, KeyAttr => 1 );
};
die "ERROR en la validación del xml: $!\n"
if $@;
#use Data::Dumper;
#print Dumper $xml;
my $dbh = DBI->connect('DBI:mysql:database=labasededatos;host=localhost', 'usuario', 'contraseña', )
or die "ERROR: No pude conectarme a la base de datos: $!\n";
my $sth = $dbh->prepare("INSERT INTO tabla(id, nombre, apellidos, direccion, telefono, email, login, clave) VALUES (?,?,?,?,?,?,?,?)");
$sth->execute(
$xml->{usuario}->{id},
$xml->{usuario}->{nombre},
$xml->{usuario}->{apellidos},
$xml->{usuario}->{direccion},
$xml->{usuario}->{telefono},
$xml->{usuario}->{email},
$xml->{usuario}->{login},
$xml->{usuario}->{clave},
);
Coloreado en 0.004 segundos, usando
GeSHi 1.0.8.4
Si el xml lo tienes en un fichero aparte, solo tienes que pasárselo a XMLin() para que lo lea.
También tienes el módulo
XML::EasySQL que puede realizar la misma tarea, con menos líneas.