[SP-pm] XML::Simple

Marcio Mello marcio at modapoint.com.br
Fri Dec 4 08:48:05 PST 2009


Daniel,
Já olhei manuais e exemplos e ainda parece grego prá mim..
Aqui está o XML... veja se tem alguma sugestão.. obrigado.
O que preciso é startTime, ANI, DestinationNumber, transactionDescription, 
Time a Cost para montar um relatório em uma tabela.

$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'
                                                                             
                                            },
                                                                             
                                             .............  etc ....

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 2:38 PM
Subject: Re: [SP-pm] XML::Simple


Só para esclarecer, você tem de retorno um XML, você precisa de
algumas informações desse XML mas não consegue pois está com dúvida de
como usar o XML::Simple, certo ?

Se for esse o seu problema, o manual explica direitinho. Olha só um trecho 
dele:
<manual>
       For example, this XML:

           <opt>
             <user login="grep" fullname="Gary R Epstein" />
             <user login="stty" fullname="Simon T Tyson" />
           </opt>

       would, by default, parse to this:

           {
             'user' => [
                         {
                           'login' => 'grep',
                           'fullname' => 'Gary R Epstein'
                         },
                         {
                           'login' => 'stty',
                           'fullname' => 'Simon T Tyson'
                         }
                       ]
           }
</manual>


http://search.cpan.org/~grantm/XML-Simple-2.18/lib/XML/Simple.pm

Mesmo assim se você não conseguir fazer o parser, cola o XML aqui que
nós te ajudamos.

[]'s

2009/12/4 Marcio Mello <marcio em modapoint.com.br>:
> 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
>
> _______________________________________________
> 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