[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