[Madrid-pm] Parsear un XML

Francisco Rivas franciscojrivash en gmail.com
Jue Mayo 5 06:50:47 PDT 2011


Hola a todos de nuevo! :D

Han pasado un monton de dias desde que plantee esto y entre una cosa y otra
lo tuve que dejar a un lado y volvi y les coloco finalmente lo que
necesitaba, aun estoy agregando un par de cosas por requerimientos
especificos (ahora tengo que subir esos zip a un servidor por ftp y tal).
Aqui esta el codigo http://pastebin.com/4DhSFHqG Se que no es la manera mas
corta y elegante que hay pero por el momento necesito resolver esto y ademas
no tengo mucha experiencia con programando en perl (y eso se nota en el
codigo). La verdad es que habis escogido Python para esto pero al ver los
distintos modulos que hay y compararlos con los de Perl me di cuenta de
inmediato que los de Perl son muuucho mas flexibles y tienen exactamente lo
que necesito. Python me gusta mucho de hecho tengo algo mas de tiempo
programando en Python pero Perl creo que se ajusta mucho mas a esta tarea.

Por otro lado si alguno me puede hacer alguna sugerencia o incluso
recomendarme alguna manera mas "Perlistica" de hacer alguna de las cosas que
esta en el script estaria muy agradecido :D. Por ejemplo una mejora pudiese
ser que en vez de usar variables globales usara locales y llamara a cada
subrutina dentro de un loop en vez de hacer el loop dentro de la subrutina
el detalle esta en que cuantas veces tendria que llamar a la subrutina creo
que por eso podria sacrificar el uso de variables locales, supongo que seria
un poco mas eficiente. Esto solo por comentar alguna cuestion que veo
directamente.

Pasen muy buen dia y gracias a todos por sus comentarios me han servido de
mucho :D

2011/4/28 Francisco Rivas <franciscojrivash at gmail.com>

> Hola de nuevo, he hecho el script con XML::Twig y solo puedo decir que es
> muuuuyyy bueno!. Excelente!, Justo lo que necesitaba. Por otro lado me esta
> sucediendo algo que quiza se trata de algo que estoy haciendo mal, quisiera
> hacer las modificaciones al archivo y escribirlas en el mismo archivo una
> vez que termine, entonces he visto la funcion parsefile_inplace pero si
> parseo el archivo de esa manera al final el archivo queda en blanco, estoy
> haciendo algo mal? (seguro :P).
>
> Este es el codigo que he escrito hasta el momento
> http://pastebin.com/mzN7AxQH en este caso no estoy usando parsefile_input
> y se que hay cosas que se pueden hacer de manera distinta y quiza mas corta
> pero como estoy aprendiendo a usar el modulo lo he hecho asi.
>
> Para resumir un poco la duda : si utilizo parsefile_inplace cuando termino
> el parseo el archivo queda en blanco.
>
> Muchas gracias a todos de nuevo por los comentarios y por orientarme, muy
> buen dia :D
>
> 2011/4/27 Francisco Rivas <franciscojrivash at gmail.com>
>
>> Justo en esto estoy! :D
>>
>> 2011/4/27 Javier Camuñas <kamunas at gmail.com>
>>
>>> - Si es grande el xml a parsear XML::Simple te dejará prácticamente sin
>>> RAM.
>>> - Usaría ForceArray en caso de Simple
>>> - Prueba XML::Twig
>>>
>>> un saludo
>>>
>>>  2011/4/27 Francisco Rivas <franciscojrivash at gmail.com>
>>>
>>>>  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
>>>>
>>>> _______________________________________________
>>>> Madrid-pm mailing list
>>>> Madrid-pm at pm.org
>>>> http://mail.pm.org/mailman/listinfo/madrid-pm
>>>>
>>>
>>>
>>> _______________________________________________
>>> Madrid-pm mailing list
>>> Madrid-pm at pm.org
>>> http://mail.pm.org/mailman/listinfo/madrid-pm
>>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/madrid-pm/attachments/20110505/41e73cd4/attachment.html>


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