[SP-pm] XML::Simple

Marcio Mello marcio at modapoint.com.br
Fri Dec 4 08:13:03 PST 2009


A resposta contém:
startTime,  ANI,  DestinationNumber,  destinationDescription,  Time  e  Cost 
.
Existem outros dados mas não são importantes.

São várias linhas com estes dados e preciso mostrar em uma tabela, que no 
código tentei colocar em $tabelaprint .

Marcio Mello.

----- Original Message ----- 
From: "Daniel de Oliveira Mantovani" <daniel.oliveira.mantovani em gmail.com>
To: <saopaulo-pm em mail.pm.org>
Sent: Friday, December 04, 2009 1:54 PM
Subject: Re: [SP-pm] XML::Simple


Explica o que você quer fazer, não o que você está tentando fazer com o 
código.

2009/12/4 Lindolfo "Lorn" Rodrigues <lorn.br em gmail.com>:
> You are doing it wrong.
> Não é porque SOAP retorna um XML que você tem que "parsear" a resposta 
> dele
> com o XML::Simple :P
> Dê uma olhada no
> http://search.cpan.org/~berle/SOAP-Simple-0.00_03/lib/SOAP/Simple.pm se 
> não
> funcionar, vai ter que usar
> http://search.cpan.org/~mkutter/SOAP-Lite-0.710.10/lib/SOAP/Lite.pm o
> SOAP::Lite tem uma pasta 'example' junto com o fonte que ajuda bastante
>
> 2009/12/4 Marcio Mello <marcio em modapoint.com.br>
>>
>> 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
>> _______________________________________________
>> SaoPaulo-pm mailing list
>> SaoPaulo-pm em pm.org
>> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>
>
>
> --
> lorn at lornlab dot org
> Lindolfo "Lorn" Rodrigues
>
>
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm em pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>



-- 
Existe dois tipos de pessoas, as que reclamam a vida inteira do que
fazem, e as que fazem o que nasceram para fazer.
_______________________________________________
SaoPaulo-pm mailing list
SaoPaulo-pm em pm.org
http://mail.pm.org/mailman/listinfo/saopaulo-pm



More information about the SaoPaulo-pm mailing list