[Rio-pm] Dúvida: Perl com XML
breno
breno em rio.pm.org
Sexta Julho 8 14:49:17 PDT 2011
2011/7/8 Taciana Gomes <taciana.alessandra em gmail.com>:
> http://pastebin.com/HKxrGArq
>
> Obrigada =)
Oi Taciana,
da próxima vez, por favor encaminhe pelo menos a dúvida direto no
corpo da mensagem, assim fica mais fácil entender do que você está
falando.
Outra: não cole parte do código, monte um exemplo mínimo de código que
consiga ser executado fora do seu programa principal e reproduza o
problema, e cole isso. Por exemplo, nesse caso, existem trocentos
módulos para tratamento de XML, e precisei procurar para saber que
está usando o XML::LibXML. Está? Ou é outro e me enganei? De qualquer
forma, acho que ilustra bem o problema de arrancar um trecho de código
sem um mínimo de contexto :-)
Dito isso, acho que você pode usar exatamente o que está sendo feito
no script para pegar os nodes "concept" e colocar em $result. Que tal
trocar o seu foreach disso:
----------8<----------
my $results = $root->findnodes('/success/data/annotatorResultBean/annotations/annotationBean/concept');
foreach my $c_node ($results->get_nodelist){
$sinonimos = $c_node->findvalue('synonyms');
print "\n Sinonimos: ". $sinonimos."\n";
}
---------->8----------
Para algo como isso (atenção - código não testado!):
----------8<----------
my $results = $root->findnodes('/success/data/annotatorResultBean/annotations/annotationBean/concept');
foreach my $c_node ($results->get_nodelist) {
print "\n Sinonimos: ";
foreach my $sinonimo ( $c_node->findnodes('synonyms') ) {
print $sinonimo->to_literal;
}
print "\n";
}
---------->8----------
Não sei dizer se 'synonyms' é uma sub-expressão XPath válida aqui, mas
a idéia é essa: pegar a lista de elementos e observar/manipular seu
conteúdo um por um. O método to_literal() pode não ser o que você
quer, experimente também nodeValue() e textContent() (isto é, supondo
que está usando XML::LibXML).
Espero ter ajudado. Qualquer dúvida, não hesite em enviar para a
lista! Estamos aqui pra isso =)
[]s
-b
Mais detalhes sobre a lista de discussão Rio-pm