[Madrid-pm] Parsear un XML

Salvador Fandino sfandino en yahoo.com
Mie Abr 27 10:03:37 PDT 2011


Para modificar un XML al vuelo, a lo mejor te interesa más utilizar XML::Twig o 
directamente con una transformación XSLT, sin usar Perl.

A mi XML::Simple no me gusta nada, creo que se pasa tratando de simplificar las 
cosas y siempre me decanto por XML::LibXML aunque es cierto que resulta más 
laborioso (pero lo compensa con el soporte para RelaxNG).

- Salva





________________________________
From: Francisco Rivas <franciscojrivash en gmail.com>
To: Lista de correo de Madrid Perl Mongers <madrid-pm en pm.org>
Sent: Wed, April 27, 2011 6:39:16 PM
Subject: [Madrid-pm] Parsear un XML

Hola *,

Quiero hacer un script para modificar un XML y he encontrado varios modulos en 
el CPAN que lo hacen XML::LibXML y XML::Simple por ejemplo. El detalle es que la 
forma del XML que tengo es biiiienn extrana :P, puesto que tiene varios niveles. 
Entonces lo que quiero hacer con el XML es quitarle algunos elementos y 
modificar otros. Estoy utilizando por el momento XML::Simple, soy bastante 
novato en Perl y por eso recurro a la lista.

#!/usr/bin/perl

use strict;
use warnings;

use XML::Simple;
use Data::Dumper;
$Data::Dumper::Indent = 3;

my $fh = 'BookatableWid_asset.xml';
my $tree = XMLin($fh);
delete $tree->{protocolVersion};
print Dumper($tree);

En esto que llevo hecho, que es una tonteria al final, solo elimino una de las 
'keys' que me interesa.

El detalle esta en que luego hay hash de hashes de hashes dentro del XML. Miren 
http://pastebin.com/muT2zH9E

Entonces necesito iterar en esa estructura para buscar las 'keys' que quiero 
modificar o eliminar incluso. 


Algunas recomendacion?. usar otro modulo?, utilizar ForceArray o ForceContent, 
GroupTags o algo asi?

Gracias de antemano. Muy buena tarde. :D
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.pm.org/pipermail/madrid-pm/attachments/20110427/b2da69c6/attachment.html>


Más información sobre la lista de distribución Madrid-pm