Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

Otro dilema con XML::Simple

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Módulos
Mensaje Lun Jul 28, 2008 10:00 pm
danimera
Perlero Adicto
Perlero Adicto
Registrado: 23 Jun 2005
Mensajes: 239
Ubicación: Colombia
Otro dilema con XML::Simple Responder citando

Esta es la estructura que necesito, y la puedo lograr solo para la primera tag <image> pero no sé cómo hacer para que abra y cierre para todos los demás.

XML:
<?xml version="1.0" encoding="UTF-8"?>
<gallery frameColor="0xFFFFFF" frameWidth="15" imagePadding="20" displayTime="6" enableRightClickOpen="true">
<image>
   <url>upload/8mayo.jpg</url>
   <caption>8 de Mayo</caption>
   <width>480</width>
   <height>320</height>
</image>
<image>
   <url>upload/15mayo.jpg</url>
   <caption>15 de Mayo</caption>
   <width>480</width>
   <height>320</height>
</image>
<image>
   <url>upload/16mayo.jpg</url>
   <caption>16 de Mayo</caption>
   <width>480</width>
   <height>320</height>
</image>
<image>
   <url>upload/19mayo.jpg</url>
   <caption>19 de Mayo</caption>
   <width>480</width>
   <height>320</height>
</image>
<image>
   <url>upload/22mayo.jpg</url>
   <caption>22 de Mayo</caption>
   <width>480</width>
   <height>320</height>
</image>
</gallery>


Tengo que traer dinámicamente la información de cada imagen de una bd.
Mensaje Lun Jul 28, 2008 10:30 pm
danimera
Perlero Adicto
Perlero Adicto
Registrado: 23 Jun 2005
Mensajes: 239
Ubicación: Colombia
Responder citando

Perdón que moleste. Bueno, intenté solucionarlo y lo logré con esta parte de código:

Código:
$xml = {
      'image' => [
                    {
                      '1' => [
                                   'upload/8mayo.jpg'
                                 ],
                      '2' => ['Mayo 8'],
                      '3' => ['480'],
                      '4' => ['320']
                    },
                    {
                      '1' => [
                                   'upload/22mayo.jpg'
                                 ],
                      '2' => ['Mayo 22'],
                      '3' => ['480'],
                      '4' => ['320']
                    }
                  ]
    };


Pura estructura de datos... Perdón, pero es que por el estrés y corriendo y cosas esas me azaré mucho.
Mensaje Mar Jul 29, 2008 10:51 am
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4092
Ubicación: Valladolid, España
Responder citando

¿Y cómo has conseguido pasar de esa estructura al fichero XML?
Mensaje Mar Jul 29, 2008 11:21 am
Rene Serrano
Perlero Nuevo
Perlero Nuevo
Registrado: 27 Nov 2006
Mensajes: 82
Ubicación: El salvador CA
Responder citando

Hola, yo te recomiendo el módulo XML::Generator.

Es muy sencillo. Por experiencia te lo recomiendo.

Saludos
Mensaje Sab Ago 02, 2008 7:35 am
danimera
Perlero Adicto
Perlero Adicto
Registrado: 23 Jun 2005
Mensajes: 239
Ubicación: Colombia
Responder citando

explorer escribió:
¿Y cómo has conseguido pasar de esa estructura al fichero XML?


Es que esa era la estructura que tenía que lograr... la idea era que cómo debería formar la estructura en Perl, para que el XML::Simple me la reconociera y me creara el archivo XML correcto.
Mensaje Sab Ago 02, 2008 11:02 am
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4092
Ubicación: Valladolid, España
Responder citando

A lo que me refiero es que me gustaría ver el XMLOut() que has usado.
Mensaje Mar Ago 05, 2008 9:50 am
danimera
Perlero Adicto
Perlero Adicto
Registrado: 23 Jun 2005
Mensajes: 239
Ubicación: Colombia
Responder citando

explorer escribió:
A lo que me refiero es que me gustaría ver el XMLOut() que has usado.


Este es el código que utilice para eso:

Perl:
foreach $foto(@fotos) {
    ($id,$nombre,$tumb,$categoria,$dia_foto,$mes_foto,$anno_foto) = split(/\|\|/, $foto);

    #if ($categoria eq $category && $dia_foto == $dia && $anno == $anno_foto ){
    if ($category eq $categoria){
         $file = {
                      'aurl' => ["upload/$nombre"],
                      'caption' => ["$dia_foto / $mes_foto"],
                      'cbwidth' => ['480'],
                      'height' => ['320']
                    };
       push @{$xml->{image}}, $file;
    }
   
}


$xml->{enableRightClickOpen} = 'true';
$xml->{frameColor          } = '0xFFFFFF';
$xml->{displayTime         } = 6;
$xml->{imagePadding        } = 20;
$xml->{frameWidth          } = 15;

print $xs->XMLout( $xml,
    RootName => 'gallery',
    NoEscape => 1,
    KeyAttr  => {},
    XMLDecl  => '<?xml version="1.0" encoding="UTF-8"?>',
);
Mensaje Mar Ago 05, 2008 11:54 am
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4092
Ubicación: Valladolid, España
Responder citando

¡Ah!... pero es que ese código no genera la estructura que decías que habías usado... en el mensaje anterior.

Ya me extrañaba a mí la presencia de las claves '1', '2', '3', etc.

Caso resuelto.
Mensaje Mar Ago 05, 2008 7:33 pm
danimera
Perlero Adicto
Perlero Adicto
Registrado: 23 Jun 2005
Mensajes: 239
Ubicación: Colombia
Responder citando

ah, no, para nada, lo que pasa es que cambie ciertas cosas...
Publicar nuevo tema   Responder al tema    Foros de discusión -> Módulos Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group