• Publicidad

Valor de un tag XML

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

Valor de un tag XML

Notapor panterozo » 2010-02-04 10:12 @466

Hola nuevamente...
Necesito obtener el valor de un tag de un xml...

Sintáxis: [ Descargar ] [ Ocultar ]
Using xml Syntax Highlighting
  1. <?xml version="1.0" encoding="UTF-8" standalone="no"?>
  2. <epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  3. <response>
  4. <result code="1000">
  5.         <msg lang="en">Command completed successfully</msg>
  6. </result>
  7.         <trID>
  8.                 <clTRID>ABC-LOGOUT</clTRID>
  9.                 <svTRID>FI</svTRID>
  10.         </trID>
  11. </response>
  12. </epp>
  13.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Sintáxis: [ Descargar ] [ Ocultar ]
Using xml Syntax Highlighting
  1. <?xml version="1.0" encoding="UTF-8" standalone="no"?>
  2. <epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
  3. <response>
  4. <result code="2000">
  5.         <msg lang="en">Unknown command</msg>
  6. </result>
  7.         <trID>
  8.                 <svTRID>FI</svTRID>
  9.         </trID>
  10. </response>
  11. </epp>
  12.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Necesito obtener el valor del código del error...

Sintáxis: [ Descargar ] [ Ocultar ]
Using xml Syntax Highlighting
<result code="?????">
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


He obtenido los valores según los nombre de los tag, es decir,
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $parser = XML::LibXML->new();
my $tree =      $parser->parse_string($xml);
my $root = $tree->getDocumentElement;
print $root->getElementsByTagName('result');
 
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


y obtengo el valor de "Command completed successfully", o dependiendo del caso...
¿¿Alguna idea de cómo poder realizarlo con XML::LibXML??

thanks ;)
panterozo
Perlero nuevo
Perlero nuevo
 
Mensajes: 160
Registrado: 2010-01-26 08:36 @400

Publicidad

Re: Valor de un tag XML

Notapor erv-Z » 2010-02-04 16:32 @731

Lo puedes también hacer con expresiones regulares...
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$a = '<result code="?????">';
if($a =~ m/\w="(.+)">/g) {print $1;}
__END__
Salida:
????
 
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
erv-Z
Perlero nuevo
Perlero nuevo
 
Mensajes: 158
Registrado: 2009-07-25 13:00 @583

Re: Valor de un tag XML

Notapor explorer » 2010-02-04 17:53 @787

Según el manual de XML::LibXML::Document, esa función devuelve una lista de valores. O en contexto escalar, un objeto XML::LibXML::NodeList.

¿Por qué no usas los módulos para EPP?

Si fuera yo, haría un
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl
use XML::Simple;

my $xml_ref = XMLin('code_20971_1.xml');

print $xml_ref->{response}{result}{code};    # 2000
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

pero, repito... si fuera yo...
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: Valor de un tag XML

Notapor panterozo » 2010-02-05 06:27 @311

Lo he resuelto de la siguiente manera...

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.                 my $parser = XML::LibXML->new();
  2.                 my $tree =      $parser->parse_string($xml);
  3.                 my $root = $tree->getDocumentElement;  
  4.                 my @code= $root->getElementsByTagName('result');
  5.                 foreach my $valor(@code){#Para sacar los atributos del XML
  6.                         $codigo=$valor->getAttribute('code');#atributo code
  7.                         }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


explorer escribiste:¿Por qué no usas los módulos para EPP?


Hace un par de semanas que estoy trabajando con Perl, además de que esté todo en inglés, hay muchas cosas que no entiendo... Estoy aprendiendo a trabajar con módulos y demáses...

Muchas gracias por sus respuestas.
panterozo
Perlero nuevo
Perlero nuevo
 
Mensajes: 160
Registrado: 2010-01-26 08:36 @400


Volver a Básico

¿Quién está conectado?

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