[SP-pm] XML::Simple

Marcio Mello marcio at modapoint.com.br
Fri Dec 4 09:36:09 PST 2009


Ok, Daniel,
Vou testar aqui..
Marcio.
----- 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 3:29 PM
Subject: Re: [SP-pm] XML::Simple


Ops esqueci do my:
*my $itens = $xml->XMLin($content);*

2009/12/4 Daniel de Oliveira Mantovani 
<daniel.oliveira.mantovani em gmail.com>:
> my $xml = XML::Simple->new();
> $itens = $xml->XMLin($content);
>
> foreach my $want (@{ $itens->{'userTransactions'} }) {
> print $want->{'startTime'} . "\n";
> ....
> }
>
> Eu não testei o código.
>
> 2009/12/4 Marcio Mello <marcio em modapoint.com.br>:
>> 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
>>
>> _______________________________________________
>> 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.
>



-- 
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