• Publicidad

Crear archivo xml con XML::Simple

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Crear archivo xml con XML::Simple

Notapor perlpty » 2009-06-05 16:52 @745

Hola. Quiero aprender a usar XML y quisiera saber si me pueden recomendar algún manual o algo que me pueda ayudar. Tengo varias cosas que me gustaría hacer como por ejemplo, sacar información de la BD y construir un xml, algo como esto:

Sintáxis: [ Descargar ] [ Ocultar ]
Using xml Syntax Highlighting
<Info>
  <Id>12345</Id>
  <Account>
   <Card>
      <cardActive>1</cardActive>
      <cardExp></cardExp>
      <cardId>777889003666</cardId>
      <cardLost>0</cardLost>
    </Card>
    <Card>
      <cardActive>1</cardActive>
      <cardExp></cardExp>
      <cardId>777889003672</cardId>
      <cardLost>0</cardLost>
    </Card>
</Account>
</Info>
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


La parte de <Card> ya la pude sacar con este código:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
   my @rows;
   sDB_Select($dbh,$stmt,\@rows,$sub);
   my $dump = Dumper(\@rows);
   print "$dump\n";
   print "<BR>--------------------------------------<BR>\n";
   my $max = scalar(@rows);
   #my  $hash=();
   for ( my $ptr=0; $ptr<$max; $ptr++ ) {
      my $cardActive = 1;
      if ( $rows[$ptr]{dt_inactivated} ne '' )  { $cardActive = 0; }
       my $hash = {
           'patronCard' => {
           'cardId' => $rows[$ptr]{cardnum},
           'cardExp' =>  sDateTimeTos2sDateTime($ini,$rows[$ptr]{dt_validthru}),
           'cardLost' => '0',
           'cardActive' => $cardActive
         }
      };
      $xmlout .= XMLout($hash,AttrIndent => 1, KeepRoot => 1, NoAttr => 1);
   } # end for
   return $xmlout;
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4


La pregunta es cómo hago para agregar 'Info', 'id', 'Account'.
perlpty
Perlero nuevo
Perlero nuevo
 
Mensajes: 1
Registrado: 2009-06-05 16:44 @739

Publicidad

Notapor explorer » 2009-06-07 12:34 @565

Bienvenido a los foros de Perl en Español, perlpty.

Agregar 'Id' y 'Account' es cuestión de ir agregando claves y valores al diccionario que almacena la estructura de tu xml. Y agregar 'Info' es cuestión de decírselo al final, cuando se va a crear el nodo raíz:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;

use XML::Simple;

my %xml = (
    Id => 12345,
    Account => {
        Card => [
            {
                cardActive => 1,
                cardExp => '',
                cardId => 777889003666,
                cardLost => 0,
            },
            {
                cardActive => 1,
                cardExp => '',
                cardId => 777889003672,
                cardLost => 0,
            },
        ],
    },
);

print XMLout(\%xml, RootName => 'Info', NoAttr => 1);

__END__
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
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


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron