• Publicidad

Parseo XML

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Parseo XML

Notapor situ » 2009-12-22 07:48 @366

Tengo un sitio en ASP el cual me devuelve información de mi PC formato XML:
URL: http://localhost/prueba.asp?id=situ
Obtengo en el source del sitio:
Sintáxis: [ Descargar ] [ Ocultar ]
Using xml Syntax Highlighting
        <resultado>
                <parametros>
                        <id>123</id>
                        <hostname>situ</nombre>
                        <meminfo>1gb</apellido>
                </parametros>
    </resultado>
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

El problema es que este formato lo veo en el source del sitio ya que el mismo ASP trae esa información.

¿Hay alguna forma de parsear estos datos?
Saludos.
Última edición por situ el 2009-12-22 09:30 @437, editado 1 vez en total
situ
Perlero nuevo
Perlero nuevo
 
Mensajes: 358
Registrado: 2007-04-09 01:44 @114

Publicidad

Re: Parseo XML

Notapor explorer » 2009-12-22 07:54 @370

Tienes muchos módulos Perl para interpretar código XML.

Algo así como doscientos ;)
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Parseo XML

Notapor situ » 2009-12-22 08:14 @385

Vi XML::Simple pero no sé cómo hacer para parsear el contenido del sitio, ya que el archivo generado es ASP y no XML. Por eso preguntaba.
Gracias
situ
Perlero nuevo
Perlero nuevo
 
Mensajes: 358
Registrado: 2007-04-09 01:44 @114

Re: Parseo XML

Notapor explorer » 2009-12-22 09:08 @422

Que yo sepa, el formato ASP es un fichero fuente, de programación. No son datos.

Al principio dices que te lo devuelve en formato XML, así que eso es suficiente.

Y para interpretarlo con el XML::Simple, sería necesario que pusieras aquí un ejemplo completo, o al menos, las cabeceras y parte del cuerpo del fichero XML.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Parseo XML

Notapor situ » 2009-12-22 09:23 @433

Perdón, me expresé mal. La utilidad me devuelve los datos de mi PC; sí veo el código fuente del sitio generado; es el XML que pase arriba; pero como decía, la aplicación es ASP y no tengo un archivo .xml para parsear, por eso decía cómo puedo parsear el código fuente del sitio ya que éste sí está en XML.

Yo tengo este script el cual me da el primer dato mediante regex:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use LWP::UserAgent;
  3. my $ua = LWP::UserAgent->new(agent => 'Mozilla/4.8 [en] (Windows NT 6.0; U)');
  4. $ua->timeout(10);
  5. $pc= $ARGV[0];
  6. chomp $pc;
  7.  
  8. $url="http://localhost/prueba.asp?id=situ";
  9.  
  10. my $response = $ua->get($url);
  11.  
  12.  if ($response->is_success) {
  13. if ( $response->content =~ /<id>+(\d+)\D+<id>/ ) {
  14.  
  15. print "$1\n";
  16.    
  17.  }
  18.  else {
  19.      die $response->status_line;
  20.  }
  21. }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

Saludos.
Última edición por situ el 2009-12-22 09:32 @439, editado 1 vez en total
situ
Perlero nuevo
Perlero nuevo
 
Mensajes: 358
Registrado: 2007-04-09 01:44 @114

Re: Parseo XML

Notapor explorer » 2009-12-22 11:46 @532

Bueno, se puede simplificar bastante, aparte de que estás usando más cosas de las que necesitas.

Solo requieres usar el LWP::Simple y el XML::Simple (muy simple, de verdad).

(no probado)
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use LWP::Simple;
  3. use XML::Simple;
  4.  
  5. my $xml = XMLin(get('http://localhost/prueba.asp?id=situ'));
  6.  
  7. use Data::Dumper;
  8. print Dumper $xml;
  9.  
  10. print "id=>", $xml->{parametros}->{id}, "\n";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Entonces, con una cadena como esta:
Sintáxis: [ Descargar ] [ Ocultar ]
Using xml Syntax Highlighting
<resultado>
  <parametros>
    <id>123</id>
    <hostname>situ</hostname>
    <meminfo>1gb</meminfo>
  </parametros>
</resultado>
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
(no es la misma que has mostrado como ejemplo, ya que no era un xml válido). El resultado es:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
$VAR1 = {
          'parametros' => {
                          'meminfo' => '1gb',
                          'hostname' => 'situ',
                          'id' => '123'
                        }
        };
id=>123
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Las opciones a pasar a XMLin() dependerán un poco del aspecto del XML, pero si es algo sencillo, sale rápido.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Parseo XML

Notapor situ » 2009-12-22 13:56 @622

Como siempre muchísimas gracias, me salvaste =) y la verdad que en menos de la mitad del código que yo tenía :D
situ
Perlero nuevo
Perlero nuevo
 
Mensajes: 358
Registrado: 2007-04-09 01:44 @114


Volver a Intermedio

¿Quién está conectado?

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

cron