• Publicidad

Parser XML

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

Parser XML

Notapor panterozo » 2010-02-16 09:12 @425

He estado implementando el protocolo EPP (Extensible Provisioning Protocol), y ando buscando la forma de dejar el siguiente xml...

Sintáxis: [ Descargar ] [ Ocultar ]
Using xml Syntax Highlighting
  1. <?xml version="1.0" encoding="UTF-8"?><epp xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd"><response><result code="1000"><msg>Command completed successfully</msg></result><msgQ count="156" id="307886"/><resData><host:chkData xmlns:host="urn:ietf:params:xml:ns:host-1.0" xsi:schemaLocation="urn:ietf:params:xml:ns:host-1.0 host-1.0.xsd"><host:cd><host:name avail="0">ns1.host.com</host:name><host:reason>In use</host:reason></host:cd></host:chkData></resData><trID><clTRID>ABC-12345</clTRID><svTRID>52495643</svTRID></trID></response></epp>
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

en el que le sigue,
Sintáxis: [ Descargar ] [ Ocultar ]
Using xml Syntax Highlighting
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd">
  3. <response>
  4.       <result code="1000">
  5.             <msg>Command completed successfully</msg>
  6.       </result>
  7.       <msgQ count="156" id="307886"/>
  8.       <resData>
  9.             <host:chkData xmlns:host="urn:ietf:params:xml:ns:host-1.0" xsi:schemaLocation="urn:ietf:params:xml:ns:host-1.0 host-1.0.xsd">      
  10.       <host:cd>
  11.             <host:name avail="0">ns1.host.com</host:name>
  12.             <host:reason>In use</host:reason>
  13.       </host:cd></host:chkData>
  14.       </resData>
  15.       <trID>
  16.             <clTRID>ABC-12345</clTRID>
  17.             <svTRID>52495643</svTRID>
  18.       </trID>
  19. </response>
  20. </epp>
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


El problema principal, es que los XML entrantes, son distintos cada vez que se reciben del server. ¿Alguna sugerencia de cómo ordenar estos XML por nodos o algo así?

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

Publicidad

Re: Parser XML

Notapor explorer » 2010-02-16 10:57 @498

Yo veo que los dos ficheros contienen la misma información... ¿qué problema hay?

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use diagnostics;
  5.  
  6. use XML::Simple;
  7. use Data::Dumper;
  8.  
  9. my $xml = XMLin('code_21097.xml');
  10. #print Dumper $xml;
  11.  
  12. print $xml->{response}->{trID}->{clTRID}, "\n";
  13. print $xml->{response}->{msgQ}->{id}, "\n";
  14. print $xml->{response}->{result}->{msg}, "\n";
  15.  
  16. print "\n";
  17.  
  18. $xml = XMLin('code_21097_1.xml');
  19. #print Dumper $xml;
  20.  
  21. print $xml->{response}->{trID}->{clTRID}, "\n";
  22. print $xml->{response}->{msgQ}->{id}, "\n";
  23. print $xml->{response}->{result}->{msg}, "\n";
  24.  
  25. __END__
  26. ABC-12345
  27. 307886
  28. Command completed successfully
  29.  
  30. ABC-12345
  31. 307886
  32. Command completed successfully
Coloreado en 0.003 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

Re: Parser XML

Notapor panterozo » 2010-02-16 14:34 @648

Mi intención es hacerlo con XML::LibXML... Cuando lo resuelva pongo la solución ;)
panterozo
Perlero nuevo
Perlero nuevo
 
Mensajes: 160
Registrado: 2010-01-26 08:36 @400

Re: Parser XML

Notapor panterozo » 2010-02-16 16:04 @711

panterozo escribiste:Mi intención es hacerlo con XML::LibXML... Cuando lo resuelva pongo la solución ;)


Con $root->toString(1);, y sale perfecto ;)
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 13 invitados

cron