Grego é?? Blz! Vou tentar traduzir um pouquinho então...<br><br><code><br>use strict;<br>use XML::Simple;<br>use Data::Dumper; #Isso vai ajudar vc a entender o que o XML::Simple vai trazer e como vai trazer.<br><br>my $string = '<?xml version="1.0" encoding="utf-8" ?><br>
<font face="Arial" size="2"><soap:Envelope xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance" target="_blank">http://www.w3.org/2001/XMLSchema-instance</a>"
xmlns:xsd="<a href="http://www.w3.org/2001/XMLSchema" target="_blank">http://www.w3.org/2001/XMLSchema</a>"
xmlns:soap="<a href="http://schemas.xmlsoap.org/soap/envelope/" target="_blank">http://schemas.xmlsoap.org/soap/envelope/</a>"><br>
<soap:Header><br> <AuthHeader
xmlns="vscws"><br>
<distriID>XXXX</distriID><br>
<password>XXXXXX</password><br>
</AuthHeader><br> </soap:Header><br>
<soap:Body><br> <getUserTransactions
xmlns="vscws"><br>
<controlNumber>XXXXXX</controlNumber><br>
<transactionType></transactionType><br>
<dateFrom>2009-11-10</dateFrom><br>
<dateTo>2009-11-30</dateTo><br>
</getUserTransactions><br>
</soap:Body><br></soap:Envelope>';</font> <pre><font size="4"><br> my $ref = undef;<br> my $obj = XML::Simple->new();<br><br> #Tratando possivel erro de parsing<br> eval{$ref = $obj->XMLin($string);};#Isso transforma o XML em uma estrutura de dados em forma de hashes e arrays... <br>
if($@){<br> print "\nNao foi possivel fazer o parsing: $@\n";<br> }else{<br><br> print Dumper $ref; #Isso mostra a estrutura de dados gerada pelo parsing.<br> my $xml = XMLout($ref);#Isso converte a estrutura de dados armazenada em $ref para XML novamente. <br>
#Não sei se tem muito sentido isso para você, mas enfim...<br> }<br></font></pre>__END__<br><br></code><br><br><br>Quando executar esse script, vai ver algo do tipo: <br><br><br>$VAR1 = {<br>
'xmlns:xsi' => '<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>',<br> 'soap:Header' => {<br> 'AuthHeader' => {<br>
'xmlns' => 'vscws',<br> 'password' => 'XXXXXX',<br> 'distriID' => 'XXXX'<br>
}<br> },<br> 'soap:Body' => {<br> 'getUserTransactions' => {<br> 'xmlns' => 'vscws',<br>
'transactionType' => {},<br> 'dateFrom' => '2009-11-10',<br> 'dateTo' => '2009-11-30',<br>
'controlNumber' => 'XXXXXX'<br> }<br> },<br> 'xmlns:xsd' => '<a href="http://www.w3.org/2001/XMLSchema">http://www.w3.org/2001/XMLSchema</a>',<br>
'xmlns:soap' => '<a href="http://schemas.xmlsoap.org/soap/envelope/">http://schemas.xmlsoap.org/soap/envelope/</a>'<br> };<br><br>Aí é só acessar via perl o que você quer. Por exemplo, vamos capturar 'getUserTransactions'<br>
<br><code><br><br> my $getUserTransaction = $xml->{soap.Body}->{getUsertTransaction};<br><br></code><br><br><br>Melhorou?<br><br><div class="gmail_quote">2009/12/4 Daniel de Oliveira Mantovani <span dir="ltr"><<a href="mailto:daniel.oliveira.mantovani@gmail.com">daniel.oliveira.mantovani@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">2009/12/4 Marcio Mello <<a href="mailto:marcio@modapoint.com.br">marcio@modapoint.com.br</a>>:<br>
<div><div></div><div class="h5">> Olá à todos,<br>
> Não conheço bem o módulo XML::Simple e não sei como traduzir os dados<br>
> corretamente.<br>
> Se alguém puder ajudar, fico grato..<br>
><br>
> A resposta que recebo do servidor está aqui e o código está abaixo:<br>
><br>
> ===========================================================<br>
> $VAR1 = { 'xmlns:xsi' => '<a href="http://www.w3.org/2001/XMLSchema-instance" target="_blank">http://www.w3.org/2001/XMLSchema-instance</a>',<br>
> 'soap:Body' => { 'getUserTransactionsResponse' => { 'xmlns' => 'vscws',<br>
> 'getUserTransactionsResult' => { 'VSC' => { 'xmlns' => '',<br>
> 'userTransactions' => [ { 'Time' => '1:00', 'Limit' => '5', 'DNIS' =><br>
> '56012', 'destinationDescription' => "Brasil - S\x{e3}o Paulo - \x{c1}rea 11<br>
> - Celular", 'Income' => '0.0000', 'controlNumber' => '2414568', 'ANI' =><br>
> '1145822125', 'DestinationNumber' => '551199117099', 'Balance' => '-44.024',<br>
> 'startTime' => '2009-11-27 17:28:45', 'Cost' => '0.89',<br>
> 'transactionDescription' => 'Termination', 'billing' => 'Limited',<br>
> 'RealTime' => '0:22' }, { 'Time' => '1:00', 'Limit' => '5', 'DNIS' =><br>
> '56012', 'destinationDescription' => 'Brasil - Roc', 'Income' => '0.0000',<br>
> 'controlNumber' => '2414568', 'ANI' => '1145822125', 'DestinationNumber' =><br>
> '551145215888', 'Balance' => '-44.314', 'startTime' => '2009-11-27<br>
> 17:25:45', 'Cost' => '0.29', 'transactionDescription' => 'Termination',<br>
> 'billing' => 'Limited', 'RealTime' => '0:19' }, { 'Time' => '1:00', 'Limit'<br>
> => '5', 'DNIS' => '56012', 'destinationDescription' => 'Brasil - Roc',<br>
> 'Income' => '0.0000', 'controlNumber' => '2414568', 'ANI' => '1145822125',<br>
> 'DestinationNumber' => '551145215888', 'Balance' => '-44.604', 'startTime'<br>
> => '2009-11-27 17:16:30', 'Cost' => '0.29', 'transactionDescription' =><br>
> 'Termination', 'billing' => 'Limited', 'RealTime' => '0:24' }, { 'Time' =><br>
> '1:00', 'Limit' => '5', 'DNIS' => '56012', 'destinationDescription' =><br>
> 'Brasil -', 'Income' => '0.0000', 'controlNumber' => '2414568', 'ANI' =><br>
> '1145822125', 'DestinationNumber' => '551164545504', 'Balance' => '-45.494',<br>
> 'startTime' => '2009-11-27 17:06:44', 'Cost' => '0.89',<br>
> 'transactionDescription' => 'Termination', 'billing' => 'Limited',<br>
> 'RealTime' => '0:12' }, { 'Time' => '1:48', 'Limit' => '5', 'DNIS' =><br>
> '56012', 'destinationDescription' => 'Brasil - Roc', 'Income' => '0.0000',<br>
> 'controlNumber' => '2414568', 'ANI' => '1130337016', 'DestinationNumber' =><br>
> '551130337005', 'Balance' => '-46.016', 'startTime' => '2009-11-27<br>
> 12:19:22', 'Cost' => '0.522', 'transactionDescription' => 'Termination',<br>
> 'billing' => 'Limited', 'RealTime' => '1:43' }, { 'Time' => '1:00', 'Limit'<br>
> => '5', 'DNIS' => '56012', 'destinationDescription' => "Brasil - S\x{e3}o<br>
> Paulo - \x{c1}rea 11 - Celular", 'Income' => '0.0000', 'controlNumber' =><br>
> '2414568', 'ANI' => '1130337016', 'DestinationNumber' => '551199117099',<br>
> 'Balance' => '-46.906', 'startTime' => '2009-11-27 12:20:28', 'Cost' =><br>
> '0.89', 'transactionDescription' => 'Termination', 'billing' => 'Limited',<br>
> 'RealTime' => '0:13' }, { 'Time' => '1:00', 'Limit' => '5', 'DNIS' =><br>
> '56012', 'destinationDescription' => "Brasil - S\x{e3}o Paulo - \x{c1}rea 11<br>
> - Celular", 'Income' => '0.0000', 'controlNumber' => '2414568', 'ANI' =><br>
> '1130337016', 'DestinationNumber' => '551199117099', 'Balance' => '-47.796',<br>
> 'startTime' => '2009-11-27 12:07:35', 'Cost' => '0.89',<br>
> 'transactionDescription' => 'Termination', 'billing' => 'Limited',<br>
> 'RealTime' => '0:20' }, { 'Time' => '1:00', 'Limit' => '5', 'DNIS' =><br>
> '56012', 'destinationDescription' => 'Brasil - Roc', 'Income' => '0.0000',<br>
> 'controlNumber' => '2414568', 'ANI' => '1130337016', 'DestinationNumber' =><br>
> '551130337005', 'Balance' => '-48.086', 'startTime' => '2009-11-27<br>
> 12:06:08', 'Cost' => '0.29', 'transactionDescription' => 'Termination',<br>
> 'billing' => 'Limited', 'RealTime' => '0:21' }, { 'Time' => '0:00', 'Limit'<br>
> => '5', 'DNIS' => {}, 'destinationDescription' => {}, 'Income' => '50',<br>
> 'controlNumber' => '2414568', 'ANI' => {}, 'DestinationNumber' => {},<br>
> 'Balance' => '1.914', 'startTime' => '2009-11-26 18:05:36', 'Cost' =><br>
> '0.0000', 'transactionDescription' => 'Payment', 'billing' => 'Limited',<br>
> 'RealTime' => '0:00' }, { 'Time' => '1:00', 'Limit' => '5', 'DNIS' =><br>
> '30338031', 'destinationDescription' => 'Brasil - Roc', 'Income' =><br>
> '0.0000', 'controlNumber' => '2414568', 'ANI' => '1145822125',<br>
> 'DestinationNumber' => '551145215888', 'Balance' => '1.624', 'startTime' =><br>
> '2009-11-25 18:11:25', 'Cost' => '0.29', 'transactionDescription' =><br>
> 'Termination', 'billing' => 'Limited', 'RealTime' => '0:47' }, { 'Time' =><br>
> '1:00', 'Limit' => '5', 'DNIS' => '56012', 'destinationDescription' =><br>
> 'Brasil - Roc', 'Income' => '0.0000', 'controlNumber' => '2414568', 'ANI' =><br>
> '1145822125', 'DestinationNumber' => '551155478001', 'Balance' => '1.334',<br>
> 'startTime' => '2009-11-25 11:55:47', 'Cost' => '0.29',<br>
> 'transactionDescription' => 'Termination', 'billing' => 'Limited',<br>
> 'RealTime' => '0:09' }, { 'Time' => '1:00', 'Limit' => '5', 'DNIS' =><br>
> '56012', 'destinationDescription' => 'Brasil - Roc', 'Income' => '0.0000',<br>
> 'controlNumber' => '2414568', 'ANI' => '1145822125', 'DestinationNumber' =><br>
> '551140040435', 'Balance' => '1.044', 'startTime' => '2009-11-25 11:48:00',<br>
> 'Cost' => '0.29', 'transactionDescription' => 'Termination', 'billing' =><br>
> 'Limited', 'RealTime' => '0:07' }, { 'Time' => '1:36', 'Limit' => '5',<br>
> 'DNIS' => '56012', 'destinationDescription' => 'Brasil - Roc', 'Income' =><br>
> '0.0000', 'controlNumber' => '2414568', 'ANI' => '1145822125',<br>
> 'DestinationNumber' => '551140040435', 'Balance' => '0.58', 'startTime' =><br>
> '2009-11-25 11:09:02', 'Cost' => '0.464', 'transactionDescription' =><br>
> 'Termination', 'billing' => 'Limited', 'RealTime' => '1:31' }, { 'Time' =><br>
> '1:00', 'Limit' => '5', 'DNIS' => '56012', 'destinationDescription' =><br>
> 'Brasil - Roc', 'Income' => '0.0000', 'controlNumber' => '2414568', 'ANI' =><br>
> '1145822125', 'DestinationNumber' => '551138330767', 'Balance' => '0.29',<br>
> 'startTime' => '2009-11-25 10:11:35', 'Cost' => '0.29',<br>
> 'transactionDescription' => 'Termination', 'billing' => 'Limited',<br>
> 'RealTime' => '0:47' }, { 'Time' => '1:00', 'Limit' => '5', 'DNIS' =><br>
> '56012', 'destinationDescription' => 'Brasil - Roc', 'Income' => '0.0000',<br>
> 'controlNumber' => '2414568', 'ANI' => '1145822125', 'DestinationNumber' =><br>
> '551138330767', 'Balance' => '0.0000', 'startTime' => '2009-11-25 09:50:25',<br>
> 'Cost' => '0.29', 'transactionDescription' => 'Termination', 'billing' =><br>
> 'Limited', 'RealTime' => '0:52' } ], 'Val' => { 'UserID' => '2414568' },<br>
> 'STATUS' => '0' } } } }, 'xmlns:xsd' => '<a href="http://www.w3.org/2001/XMLSchema" target="_blank">http://www.w3.org/2001/XMLSchema</a>',<br>
> 'xmlns:soap' => '<a href="http://schemas.xmlsoap.org/soap/envelope/" target="_blank">http://schemas.xmlsoap.org/soap/envelope/</a>' };<br>
> =====================================================================<br>
><br>
> use LWP::UserAgent;<br>
> use HTTP::Request;<br>
> use XML::Simple;<br>
> use Data::Dumper;<br>
><br>
> my $message = '<?xml version="1.0" encoding="utf-8"?><br>
> <soap:Envelope xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance" target="_blank">http://www.w3.org/2001/XMLSchema-instance</a>"<br>
> xmlns:xsd="<a href="http://www.w3.org/2001/XMLSchema" target="_blank">http://www.w3.org/2001/XMLSchema</a>"<br>
> xmlns:soap="<a href="http://schemas.xmlsoap.org/soap/envelope/" target="_blank">http://schemas.xmlsoap.org/soap/envelope/</a>"><br>
> <soap:Header><br>
> <AuthHeader xmlns="vscws"><br>
> <distriID>XXXX</distriID><br>
> <password>XXXXXX</password><br>
> </AuthHeader><br>
> </soap:Header><br>
> <soap:Body><br>
> <getUserTransactions xmlns="vscws"><br>
> <controlNumber>XXXXXX</controlNumber><br>
> <transactionType></transactionType><br>
> <dateFrom>2009-11-10</dateFrom><br>
> <dateTo>2009-11-30</dateTo><br>
> </getUserTransactions><br>
> </soap:Body><br>
> </soap:Envelope>';<br>
><br>
> my $length = length($message);<br>
><br>
> my $userAgent = LWP::UserAgent->new();<br>
> my $request = HTTP::Request->new(POST =><br>
> '<a href="http://200.XXX.XXX.XX:90/ws.asmx%27" target="_blank">http://200.XXX.XXX.XX:90/ws.asmx'</a>);<br>
> $request->header(SOAPAction => '"vscws/getUserTransactions"');<br>
> $request->content_type("text/xml; charset=utf-8");<br>
> $request->content_length($length);<br>
> $request->content($message);<br>
><br>
> my $response = $userAgent->request($request);<br>
><br>
> #<br>
> # Parseando o resultado (XML) do servidor<br>
> #<br>
> my $ref = XMLin( $response->content ) or die $!;<br>
> my $xml = XMLout( my $hashref );<br>
><br>
> for ( my $i = $#{ $ref->{getUserTransactions} }; $i > 0; $i-- ) {<br>
><br>
> $startdate = "${ $ref->{getUserTransactions} }[$i]->{startTime}";<br>
> $origem = "${ $ref->{getUserTransactions} }[$i]->{ANI}";<br>
> $destino = "${ $ref->{getUserTransactions}<br>
> }[$i]->{DestinationNumber}";<br>
> $descrip = "${ $ref->{getUserTransactions}<br>
> }[$i]->{destinationDescription}";<br>
> $duration = "${ $ref->{getUserTransactions} }[$i]->{Time}";<br>
> $cost = "${ $ref->{getUserTransactions} }[$i]->{Cost}";<br>
><br>
> $tabelaprint .= "<br>
> <tr><br>
> <td><p align=\"center\"><font face=\"Arial\"<br>
> size=\"1\"><b>$startdate</b></font></td><br>
> <td><p align=\"center\"><font face=\"Arial\"<br>
> size=\"1\">$origem</font></td><br>
> <td><p align=\"center\"><font face=\"Arial\"<br>
> size=\"1\"><b>$destino</b></font></td><br>
> <td><p align=\"center\"><font face=\"Arial\"<br>
> size=\"1\"><b>$descrip</b></font></td><br>
> <td><p align=\"center\"><font face=\"Arial\"<br>
> size=\"1\">$duration</font></td><br>
> <td><p align=\"center\"><font face=\"Arial\"<br>
> size=\"1\">$cost</font></td><br>
> </tr><br>
> ";<br>
> }<br>
><br>
> if($response->code == 200) {<br>
> print "$tabelaprint";<br>
> }<br>
> else {<br>
> print $response->error_as_HTML;<br>
> };<br>
</div></div>Outra coisa, você está fazendo o parser do content, e depois que você<br>
termina você verifica se ele está ok ?<br>
<br>
É ao contrário!<br>
<br>
die unless $response->code == 200<br>
#Agora você faz o parser aqui!!!<br>
<br>
Você precisa de um carro para chegar em uma cidade, depois disso você<br>
vai queima-lo, o que seria certo:<br>
1 - Checar o motor antes de partir ?<br>
2 - Checar o motor depois que você chegou e não precisa mais do carro ?<br>
<div class="im"><br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
> Obrigado.<br>
> Marcio Mello.<br>
> <a href="mailto:marcio@modapoint.com.br">marcio@modapoint.com.br</a><br>
</div><div><div></div><div class="h5">> _______________________________________________<br>
> SaoPaulo-pm mailing list<br>
> <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
> <a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a><br>
><br>
<br>
<br>
<br>
--<br>
Existe dois tipos de pessoas, as que reclamam a vida inteira do que<br>
fazem, e as que fazem o que nasceram para fazer.<br>
_______________________________________________<br>
SaoPaulo-pm mailing list<br>
<a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>André Garcia Carneiro<br>Analista/Desenvolvedor Perl<br><br><br>