[SP-pm] XML::Simple

Marcio Mello marcio at modapoint.com.br
Fri Dec 4 06:39:59 PST 2009


Olá à todos, 
Não conheço bem o módulo XML::Simple e não sei como traduzir os dados corretamente.
Se alguém puder ajudar, fico grato..

A resposta que recebo do servidor está aqui e o código está abaixo:

===========================================================
$VAR1 = { 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance', 'soap:Body' => { 'getUserTransactionsResponse' => { 'xmlns' => 'vscws', 'getUserTransactionsResult' => { 'VSC' => { 'xmlns' => '', 'userTransactions' => [ { 'Time' => '1:00', 'Limit' => '5', 'DNIS' => '56012', 'destinationDescription' => "Brasil - S\x{e3}o Paulo - \x{c1}rea 11 - Celular", 'Income' => '0.0000', 'controlNumber' => '2414568', 'ANI' => '1145822125', 'DestinationNumber' => '551199117099', 'Balance' => '-44.024', 'startTime' => '2009-11-27 17:28:45', 'Cost' => '0.89', 'transactionDescription' => 'Termination', 'billing' => 'Limited', 'RealTime' => '0:22' }, { 'Time' => '1:00', 'Limit' => '5', 'DNIS' => '56012', 'destinationDescription' => 'Brasil - Roc', 'Income' => '0.0000', 'controlNumber' => '2414568', 'ANI' => '1145822125', 'DestinationNumber' => '551145215888', 'Balance' => '-44.314', 'startTime' => '2009-11-27 17:25:45', 'Cost' => '0.29', 'transactionDescription' => 'Termination', 'billing' => 'Limited', 'RealTime' => '0:19' }, { 'Time' => '1:00', 'Limit' => '5', 'DNIS' => '56012', 'destinationDescription' => 'Brasil - Roc', 'Income' => '0.0000', 'controlNumber' => '2414568', 'ANI' => '1145822125', 'DestinationNumber' => '551145215888', 'Balance' => '-44.604', 'startTime' => '2009-11-27 17:16:30', 'Cost' => '0.29', 'transactionDescription' => 'Termination', 'billing' => 'Limited', 'RealTime' => '0:24' }, { 'Time' => '1:00', 'Limit' => '5', 'DNIS' => '56012', 'destinationDescription' => 'Brasil -', 'Income' => '0.0000', 'controlNumber' => '2414568', 'ANI' => '1145822125', 'DestinationNumber' => '551164545504', 'Balance' => '-45.494', 'startTime' => '2009-11-27 17:06:44', 'Cost' => '0.89', 'transactionDescription' => 'Termination', 'billing' => 'Limited', 'RealTime' => '0:12' }, { 'Time' => '1:48', 'Limit' => '5', 'DNIS' => '56012', 'destinationDescription' => 'Brasil - Roc', 'Income' => '0.0000', 'controlNumber' => '2414568', 'ANI' => '1130337016', 'DestinationNumber' => '551130337005', 'Balance' => '-46.016', 'startTime' => '2009-11-27 12:19:22', 'Cost' => '0.522', 'transactionDescription' => 'Termination', 'billing' => 'Limited', 'RealTime' => '1:43' }, { 'Time' => '1:00', 'Limit' => '5', 'DNIS' => '56012', 'destinationDescription' => "Brasil - S\x{e3}o Paulo - \x{c1}rea 11 - Celular", 'Income' => '0.0000', 'controlNumber' => '2414568', 'ANI' => '1130337016', 'DestinationNumber' => '551199117099', 'Balance' => '-46.906', 'startTime' => '2009-11-27 12:20:28', 'Cost' => '0.89', 'transactionDescription' => 'Termination', 'billing' => 'Limited', 'RealTime' => '0:13' }, { 'Time' => '1:00', 'Limit' => '5', 'DNIS' => '56012', 'destinationDescription' => "Brasil - S\x{e3}o Paulo - \x{c1}rea 11 - Celular", 'Income' => '0.0000', 'controlNumber' => '2414568', 'ANI' => '1130337016', 'DestinationNumber' => '551199117099', 'Balance' => '-47.796', 'startTime' => '2009-11-27 12:07:35', 'Cost' => '0.89', 'transactionDescription' => 'Termination', 'billing' => 'Limited', 'RealTime' => '0:20' }, { 'Time' => '1:00', 'Limit' => '5', 'DNIS' => '56012', 'destinationDescription' => 'Brasil - Roc', 'Income' => '0.0000', 'controlNumber' => '2414568', 'ANI' => '1130337016', 'DestinationNumber' => '551130337005', 'Balance' => '-48.086', 'startTime' => '2009-11-27 12:06:08', 'Cost' => '0.29', 'transactionDescription' => 'Termination', 'billing' => 'Limited', 'RealTime' => '0:21' }, { 'Time' => '0:00', 'Limit' => '5', 'DNIS' => {}, 'destinationDescription' => {}, 'Income' => '50', 'controlNumber' => '2414568', 'ANI' => {}, 'DestinationNumber' => {}, 'Balance' => '1.914', 'startTime' => '2009-11-26 18:05:36', 'Cost' => '0.0000', 'transactionDescription' => 'Payment', 'billing' => 'Limited', 'RealTime' => '0:00' }, { 'Time' => '1:00', 'Limit' => '5', 'DNIS' => '30338031', 'destinationDescription' => 'Brasil - Roc', 'Income' => '0.0000', 'controlNumber' => '2414568', 'ANI' => '1145822125', 'DestinationNumber' => '551145215888', 'Balance' => '1.624', 'startTime' => '2009-11-25 18:11:25', 'Cost' => '0.29', 'transactionDescription' => 'Termination', 'billing' => 'Limited', 'RealTime' => '0:47' }, { 'Time' => '1:00', 'Limit' => '5', 'DNIS' => '56012', 'destinationDescription' => 'Brasil - Roc', 'Income' => '0.0000', 'controlNumber' => '2414568', 'ANI' => '1145822125', 'DestinationNumber' => '551155478001', 'Balance' => '1.334', 'startTime' => '2009-11-25 11:55:47', 'Cost' => '0.29', 'transactionDescription' => 'Termination', 'billing' => 'Limited', 'RealTime' => '0:09' }, { 'Time' => '1:00', 'Limit' => '5', 'DNIS' => '56012', 'destinationDescription' => 'Brasil - Roc', 'Income' => '0.0000', 'controlNumber' => '2414568', 'ANI' => '1145822125', 'DestinationNumber' => '551140040435', 'Balance' => '1.044', 'startTime' => '2009-11-25 11:48:00', 'Cost' => '0.29', 'transactionDescription' => 'Termination', 'billing' => 'Limited', 'RealTime' => '0:07' }, { 'Time' => '1:36', 'Limit' => '5', 'DNIS' => '56012', 'destinationDescription' => 'Brasil - Roc', 'Income' => '0.0000', 'controlNumber' => '2414568', 'ANI' => '1145822125', 'DestinationNumber' => '551140040435', 'Balance' => '0.58', 'startTime' => '2009-11-25 11:09:02', 'Cost' => '0.464', 'transactionDescription' => 'Termination', 'billing' => 'Limited', 'RealTime' => '1:31' }, { 'Time' => '1:00', 'Limit' => '5', 'DNIS' => '56012', 'destinationDescription' => 'Brasil - Roc', 'Income' => '0.0000', 'controlNumber' => '2414568', 'ANI' => '1145822125', 'DestinationNumber' => '551138330767', 'Balance' => '0.29', 'startTime' => '2009-11-25 10:11:35', 'Cost' => '0.29', 'transactionDescription' => 'Termination', 'billing' => 'Limited', 'RealTime' => '0:47' }, { 'Time' => '1:00', 'Limit' => '5', 'DNIS' => '56012', 'destinationDescription' => 'Brasil - Roc', 'Income' => '0.0000', 'controlNumber' => '2414568', 'ANI' => '1145822125', 'DestinationNumber' => '551138330767', 'Balance' => '0.0000', 'startTime' => '2009-11-25 09:50:25', 'Cost' => '0.29', 'transactionDescription' => 'Termination', 'billing' => 'Limited', 'RealTime' => '0:52' } ], 'Val' => { 'UserID' => '2414568' }, 'STATUS' => '0' } } } }, 'xmlns:xsd' => 'http://www.w3.org/2001/XMLSchema', 'xmlns:soap' => 'http://schemas.xmlsoap.org/soap/envelope/' }; 
=====================================================================

use LWP::UserAgent;
use HTTP::Request;
use XML::Simple;
use Data::Dumper;

my $message = '<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header>
    <AuthHeader xmlns="vscws">
      <distriID>XXXX</distriID>
      <password>XXXXXX</password>
    </AuthHeader>
  </soap:Header>
  <soap:Body>
    <getUserTransactions xmlns="vscws">
      <controlNumber>XXXXXX</controlNumber>
      <transactionType></transactionType>
      <dateFrom>2009-11-10</dateFrom>
      <dateTo>2009-11-30</dateTo>
    </getUserTransactions>
  </soap:Body>
</soap:Envelope>';

my $length = length($message);

my $userAgent = LWP::UserAgent->new();
my $request = HTTP::Request->new(POST => 'http://200.XXX.XXX.XX:90/ws.asmx');
$request->header(SOAPAction => '"vscws/getUserTransactions"');
$request->content_type("text/xml; charset=utf-8");
$request->content_length($length);
$request->content($message);

my $response = $userAgent->request($request);

  #
  # Parseando o resultado (XML) do servidor
  #
  my $ref = XMLin( $response->content ) or die $!;
  my $xml = XMLout( my $hashref );

  for ( my $i = $#{ $ref->{getUserTransactions} }; $i > 0; $i-- ) {

      $startdate = "${ $ref->{getUserTransactions} }[$i]->{startTime}";
      $origem    = "${ $ref->{getUserTransactions} }[$i]->{ANI}";
      $destino   = "${ $ref->{getUserTransactions} }[$i]->{DestinationNumber}";
      $descrip   = "${ $ref->{getUserTransactions} }[$i]->{destinationDescription}";
      $duration  = "${ $ref->{getUserTransactions} }[$i]->{Time}";
      $cost      = "${ $ref->{getUserTransactions} }[$i]->{Cost}";

   $tabelaprint .= "
     <tr>
      <td><p align=\"center\"><font face=\"Arial\" size=\"1\"><b>$startdate</b></font></td>
      <td><p align=\"center\"><font face=\"Arial\" size=\"1\">$origem</font></td>
      <td><p align=\"center\"><font face=\"Arial\" size=\"1\"><b>$destino</b></font></td>
      <td><p align=\"center\"><font face=\"Arial\" size=\"1\"><b>$descrip</b></font></td>
      <td><p align=\"center\"><font face=\"Arial\" size=\"1\">$duration</font></td>
      <td><p align=\"center\"><font face=\"Arial\" size=\"1\">$cost</font></td>
   </tr>   
   ";
  }

if($response->code == 200) {
  print "$tabelaprint";
}
else {
 print $response->error_as_HTML;
};

Obrigado.
Marcio Mello.
marcio em modapoint.com.br
-------------- Pr?xima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20091204/4e64ea91/attachment-0001.html>


More information about the SaoPaulo-pm mailing list