• Publicidad

Modificar un xml mediante Perl

Aquí encontrarás todo lo que sea específicamente acerca de módulos de Perl. Ya sea que estás compartiendo tu módulo, un manual o simplemente tienes una duda acerca de alguno.

Agregar nodo xml

Notapor liraos » 2008-07-23 15:44 @697

Hola.

Tengo un xml con la siguiente estructura:
Sintáxis: [ Descargar ] [ Ocultar ]
Using xml Syntax Highlighting
<?xml version="1.0"?>
<list>
        <urll>anonym_project_te_vagy_a_legjobb.mp3</urll>
        <urll>fixing_my_brain.mp3</urll>
        <urll>if_you_are_lost_for_somewhere_else_to_be_the_heavens.mp3</urll>
        <urll>like_an_angel.mp3</urll>
        <urll>making_me_nervous_brand_sucks.mp3</urll>
        <urll>the_struggle.mp3</urll>
        <urll>it_is_a_beautiful_day.mp3</urll>
</list>
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


y necesito agregarle otro nodo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using xml Syntax Highlighting
<urll>cualquierCosa.mp3</urll>
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


estoy haciendo lo siguiente:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $xml = XMLin("$croot/prueba.xml",ForceArray => ['urll']);

foreach my $fileName (@{$Atachments->getFiles}) {
                   $fileUrl = $Atachments->getUrl($fileName);
                   $fileUrl= $self->session->url->getSiteURL . $fileUrl;
                   push @{ $xml->{urll}=> [$fileUrl]};  
                   print XMLout($xml,RootName=>"list",NoAttr=>1,XMLDecl=>1);
}
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Pero no me funciona, ¿alguien me puede decir que estoy haciendo mal?

Gracias.
liraos
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2008-07-23 10:59 @499
Ubicación: Medellin, Antioquia, Colombia

Publicidad

Notapor explorer » 2008-07-23 16:44 @739

Recuerda: Data::Dumper es tu amigo.

Cuando trabajamos con XML::Simple, lo primero es saber el aspecto que tiene la estructura que hemos leído con XMLin, para saber cómo manipularla. Eso se hace un 1 minuto.

Y luego, dos horas más tarde, adivinamos el conjunto necesario de opciones que hay que agregar a XMLout() para que vuelva a salir el mismo XML que teníamos al principio.

Lo que quieres se puede hacer así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl
use strict;
use warnings;
use XML::Simple qw(:strict);
use Data::Dumper;

my $xml = XMLin('kk.xml', ForceArray => 1, KeyAttr => 0);

push @{$xml->{urll}}, 'cualquierCosa.mp3';

#print Dumper($xml);

print XMLout($xml,KeyAttr=>{},RootName=>'list', XMLDecl => '<?xml version="1.0"?>');

__END__
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
El XML::Simple es para hacer cosas simples (por ejemplo, leer un XML o crear uno sencillo), pero a veces... lo complica demasiado.
Última edición por explorer el 2008-07-25 02:42 @154, editado 1 vez en total
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor liraos » 2008-07-23 17:30 @770

Muchas gracias, ya veo que me agrega, pero y si lo que yo quiero es que me lo agregue en el mismo archivo xml y no imprimirlo, ¿qué debo hacer?

Saludos
liraos
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2008-07-23 10:59 @499
Ubicación: Medellin, Antioquia, Colombia

Notapor explorer » 2008-07-23 18:35 @816

Debes agregar la opción OutputFile => 'kk.xml' en el XMLout().
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Anterior

Volver a Módulos

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados