[Cascavel-pm] Ajuda XML::Twig

Igor Sutton Lopes igor.sutton em gmail.com
Segunda Abril 30 12:49:22 PDT 2007


On Apr 30, 2007, at 2:27 PM, roan Brasil wrote:

> Olá Galera,
>
> Estou precisando de uma ajudinha. Eu tenho um padrão de  
> desenvolvimento já usado aqui  simples para coletar informações do  
> XML usando XML Twig. Então preciso coletar essas informações nesse  
> XML  no link-> http://www.rumo.com.br/sistema/XMLProdutos.asp? 
> IDLoja=6928&Texto=&IDProduto=&IDCategoria=&ExibeDescricao=1&origem=jac 
> otei&est=&Mult
>
> Sendo que a string resultante dessa requisição é a variavel $string;
> Estou usando XML::Twig da seguinte forma:
>
>   my $twig = XML::Twig->new(keep_encoding => "true");
>     $twig->parse("$string");
>     foreach my $product ($twig->root->children('produto')) {
>         my $sibling = $product->first_child();
>         my %produto;
>         my @nodes;
>         do {
>             $produto{$sibling->tag()} = $sibling->child_text();
>         } while($sibling = $sibling->next_sibling());
>
> Só que preciso pegar o valor da tag <descritor nome="Peso  
> líquido:">VALOR </descritor>.
> Reparando bem existe outra tag  descritor onde o atributo nome tem  
> valor DIMENSÕES.
> Alguém pode me ajudar a pegar esse VALOR?
>

Não olhei o seu documento, o trabalho é seu e vou deixar que o faça.  
Aqui está um exemplo de como eu faria -da forma mais didática que eu  
encontrei:

--code--

#!perl;

use strict;
use warnings;

use XML::Twig;

my $twig = XML::Twig->new( keep_encoding => 1 );

$twig->parse( \*DATA );

my @produtos = $twig->get_xpath(q{//produto});

for my $p (@produtos) {
     if ( my ($d) = $p->get_xpath(q{descritor}) ) {
         if ( $d->att('nome') eq 'Peso liquido:' ) {
             print $d->string_value, $/;
         }
     }
}

__DATA__
<raiz>
     <produto>
         <descritor nome="Peso liquido:">VALOR</descritor>
     </produto>
     <produto>
         <descritor nome="Peso liquido:">VALOR1</descritor>
         <descritor nome="Peso bruto:">VALOR2</descritor>
     </produto>
</raiz>

--/code--

Se você estiver interessado apenas nas tags 'descritor' de nome  
'nome' com valor 'Peso liquido:' podes procurar os elementos através  
de uma expressão xpath do tipo '//descritor[@nome="Peso liquido:"]'.

Boa sorte!

--
Igor Sutton
igor.sutton em gmail.com



-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://mail.pm.org/pipermail/cascavel-pm/attachments/20070430/c2ef62e2/attachment.html 
-------------- Próxima Parte ----------
Um anexo não texto foi limpo...
Nome  : PGP.sig
Tipo  : application/pgp-signature
Tam   : 186 bytes
Descr.: This is a digitally signed message part
Url   : http://mail.pm.org/pipermail/cascavel-pm/attachments/20070430/c2ef62e2/attachment.bin 


Mais detalhes sobre a lista de discussão Cascavel-pm