• Publicidad

Ayuda 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.

Ayuda con XML::Simple

Notapor rfm » 2009-04-29 11:48 @533

Hola a todos.
Tengo un problemilla con un XML que tiene la siguiente estructura:

Sintáxis: [ Descargar ] [ Ocultar ]
Using xml Syntax Highlighting
<perfil>
     <miniPerfil tipo='a'>
             <campo1> </campo1>
             <campo2> </campo2>
     </miniPerfil >
     <miniPerfil tipo='b'>
              <campo3> </campo3>
              <campo4> </campo4>
              <campo5> </campo5>
     </miniPerfil>
</perfil>
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Lo que quiero hacer es sacar cada "miniPerfil" (a,b.....) a un fichero. Es decir crear "a.xml" con los datos campo1 y campo2 "b.xml" con los datos campo3, campo4 y campo5.

Estoy usando XML::Simple pero al hacer XMLIn('ficheroXML_original') me da el siguiente error...
Código: Seleccionar todo
mismatched tag at line 12, column 2, byte 2314 at /usr/lib/perl5/XML/Parser.pm line 187


Un saludo y muchas gracias.
rfm
Perlero nuevo
Perlero nuevo
 
Mensajes: 47
Registrado: 2007-11-09 09:00 @417

Publicidad

Notapor explorer » 2009-04-29 14:07 @630

A mi no me da fallos. He hecho la prueba con el xml que has puesto.

Mira a ver en la línea, columna y offset que te indica, para saber qué es lo que falta. El error dice que hay una marca que falta, quizás una de cierre.
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 rfm » 2009-04-30 02:43 @155

OK, era culpa de mi XML que tenía etiquetas sin cerrar.
Gracias.
Un saludo.
rfm
Perlero nuevo
Perlero nuevo
 
Mensajes: 47
Registrado: 2007-11-09 09:00 @417

Notapor rfm » 2009-04-30 03:01 @167

Hola de nuevo.
Sigo algo perdido con el uso de XML::Simple. Alguna idea de cómo puedo hacer lo expuesto anteriormente...
Muchas gracias de antemano.
Un saludo.
rfm
Perlero nuevo
Perlero nuevo
 
Mensajes: 47
Registrado: 2007-11-09 09:00 @417

Notapor explorer » 2009-04-30 05:17 @262

A ver... una pista...

Si tenemos este xml:
Sintáxis: [ Descargar ] [ Ocultar ]
Using xml Syntax Highlighting
<perfil>
     <miniPerfil tipo='a'>
             <campo1> 1 </campo1>
             <campo2> 2 </campo2>
     </miniPerfil >
     <miniPerfil tipo='b'>
              <campo3> 3 </campo3>
              <campo4> 4 </campo4>
              <campo5> 5 </campo5>
     </miniPerfil>
</perfil>
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

entonces con este programa
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;

use XML::Simple;

my $xml = XMLin('kk.xml');

use Data::Dumper;
print Dumper($xml);

my @miniPerfiles = @{ $xml->{miniPerfil} };

for my $miniPerfil (@miniPerfiles) {

    print "Tipo: ", $miniPerfil->{tipo}, "\n";

    print "Valores: \n";
    for my $campo (keys %{ $miniPerfil }) {
        next if $campo eq 'tipo';
        print "\t", $campo, " => [", $miniPerfil->{$campo}, "]\n";
    }
}
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

sale:
Código: Seleccionar todo
$VAR1 = {
          'miniPerfil' => [
                          {
                            'campo1' => ' 1 ',
                            'tipo' => 'a',
                            'campo2' => ' 2 '
                          },
                          {
                            'tipo' => 'b',
                            'campo5' => ' 5 ',
                            'campo3' => ' 3 ',
                            'campo4' => ' 4 '
                          }
                        ]
        };
Tipo: a
Valores:
        campo1 => [ 1 ]
        campo2 => [ 2 ]
Tipo: b
Valores:
        campo5 => [ 5 ]
        campo3 => [ 3 ]
        campo4 => [ 4 ]

en donde vemos el aspecto del $xml leído y una posible forma de acceder a su contenido.

Recuerda: Data::Dumper es tu amigo.
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 22 invitados

cron