Tenemos el siguiente fichero de clientes en formato XML:
clientes.xml
<clientes>
<cliente>
<nombre>Jordi Perez</nombre>
<fecha>11:50 30/1/2000</fecha>
</cliente>
<cliente>
<nombre>Marc Juli</nombre>
<fecha>10:30 22/2/2000</fecha>
</cliente>
<cliente>
<nombre>Carme Loren</nombre>
<fecha> 11:40 24/5/2002</fecha>
</cliente>
<cliente>
<nombre>Anna Pinto</nombre>
<fecha> 7:50 22/6/2003</fecha>
</cliente>
<cliente>
<nombre>Josep Quadres</nombre>
<fecha> 9:20 19/12/2002</fecha>
</cliente>
</clientes>
Este documento XML lo queremos tratar desde un fichero PERL, en nuestro caso lo unico que haremos es listarlo por pantalla.
Para coger la información del fichero podriamos usar expresiones regulares. Peró PERL tiene una herramienta (módulo) más potente y simple de usar llamada XML::Simple.
#!/usr/bin/perl
use XML::Simple;
my $clientes = XMLin("/usuario9/perl/clientes.xml");
for( @{$clientes->{cliente}} ) {
print "$_->{nombre} => ($_->{fecha})n";
}
nota: en XMLin("/usuario9/perl/clientes.xml") ponemos la ruta donde el programa buscara el fichero XML
La función XMLin, se coge automáticamente del módulo XML::Simple, toma un fichero XML, lo abre y se lo guarda todo en una estructura de datos.
En el caso expuesto del ejemplo tendremos en $clientes->{cliente} un array con todos los clientes y este array a la vez contendrá otros arrays con los datos de los clientes (nombre y fecha).
En nuestro programa la línea for( @{$clientes->{cliente}}) recorre con un bucle el array principal y imprime el contenido de los arrays de segundo nivel (nombre y fecha)
Lo que hace el módulo, es simplemente traducir la estructura de arbol de XML en arrays associativos. Cada etiqueta del XML se convierte en una clave del array.
Usuarios que han visto este tema también han visto...
- Trabajar con archivos en Perl
- Base de datos TXT en Perl
- Usando el hash en Perl
- Usar módulos sin instalar en PERL
- Hola Mundo

Información legal | Política de Privacidad | Contacte con nosotros
Otro proyecto de Factoría de Internet. Copyright© 2003-2008 Factoría de Internet S.L.. Todos los derechos reservados.