<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:times new roman, new york, times, serif;font-size:12pt"><DIV></DIV>
<DIV> Oi Luiz...</DIV>
<DIV> Pow, obrigadão. Vou seguir as sugestões... Estudando um pouco mais estava caminhando justamente para estas soluções.</DIV>
<DIV> Abraço.<BR> </DIV>Daniel ® Antunes<BR><EM><FONT color=#007f40>profissional de informática</FONT></EM><BR><EM><FONT color=#007f40>msn</FONT></EM> daniel.legend@terra.com.br<BR><EM><FONT color=#007f40>mobile</FONT></EM> + 55 11 8965 2999<BR><EM><FONT color=#007f40>gnu/linux user</FONT></EM> #238553
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif"><BR><BR>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">----- Mensagem original ----<BR>De: Luis Motta Campos <luismottacampos@yahoo.co.uk><BR>Para: Cascavel Perl Mongers <cascavel-pm@pm.org><BR>Enviadas: Sexta-feira, 29 de Junho de 2007 5:05:57<BR>Assunto: Re: [Cascavel-pm] XML::Parser Tree<BR><BR>
<DIV>On Jun 28, 2007, at 10:04 PM, Daniel ® Antunes wrote:<BR>> Olá amigos da lista,<BR>> Estou apanhando com uma bobeirinha e acredito que os amigos <BR>> possam me ajudar.<BR>> Já fiz parsers usando Handlers para grandes documentos e conheço <BR>> bem o funcionamento.<BR><BR> Eu vou acreditar em você ;-)<BR><BR>> Agora estou tentando criar um parser usando a opção "Tree", nunca <BR>> tinha utilizado este método e apesar da simplicidade exposta na <BR>> "man page" estou apanhando.<BR>> Segue um script que fiz para testar o funcionamento :<BR>><BR>> #!/usr/bin/perl<BR>> use XML::Parser;<BR>> my $parser=new XML::Parser;<BR>> my $p=new XML::Parser(Style => 'Tree');<BR>> my
$xml=$p->parse('<inquiry>'<BR>> .'<city>2</city>'<BR>> .'<region>CENTER</region>'<BR>>
.'<childages>'<BR>> .'<childage>2</childage>'<BR>> .'<childage>11</childage>'<BR>>
.'</childages>'<BR>> .'</inquiry>');<BR>> print " 1º\t",$xml,"\n\n";<BR>> print " 2º\t",$$xml[0],"\n\n";<BR>> print " 3º\t",$$xml[1],"\n\n";<BR>> print " 4º\t",$$xml[1][1],"\n\n";<BR>> print " 5º\t",$$xml[1][2],"\n\n";<BR>> print " 6º\t",$$xml[1][3],"\n\n";<BR>> print " 7º\t",$$xml[1][4],"\n\n";<BR>> print " 8º\t",$$xml[1][5],"\n\n";<BR>> print " 9º\t",$$xml[1][6],"\n\n";<BR>><BR>> O resultado no console é o seguinte :<BR>><BR>> 1º ARRAY(0x815a0e4)<BR>> 2º inquiry<BR>> 3º ARRAY(0x815a180)<BR>> 4º
city<BR>> 5º ARRAY(0x8220f90)<BR>> 6º region<BR>> 7º ARRAY(0x8220f30)<BR>> 8º childages<BR>> 9º ARRAY(0x82130f4)<BR>> 10º<BR>> 11º<BR>> 12º<BR>><BR>> Minha dúvida é : Como navegar pelos elementos. :(<BR>> Muitíssimo obrigado galera.<BR>> Abraço.<BR>><BR>><BR>> Daniel ® Antunes<BR>> profissional de informática<BR>> msn daniel.legend@terra.com.br<BR>> mobile + 55 11 8965 2999<BR>> gnu/linux user #238553<BR><BR> Daniel, eu reescrevi o teu programa um pouquinho:<BR><BR>#!perl -l<BR>use strict;<BR>use warnings;<BR>use XML::Parser;<BR>use Data::Dumper;<BR><BR>my $parser = new XML::Parser( Style => 'Tree' );<BR>my $tree = $parser->parse( *DATA );<BR><BR>print
Dumper( $tree );<BR><BR>__DATA__<BR><?xml version="1.0" encoding="ISO-8859-1"?><BR><inquiry><BR> <city>2</city><BR> <region>CENTER</region><BR> <childages><BR> <childage>2</childage><BR> <childage>11</childage><BR> </childages><BR></inquiry><BR>__END__<BR><BR> E obtive o mesmo resultado.<BR><BR> Agora, para "navegar" nestes elementos, automaticamente, você vai <BR>precisar construir funções especializadas.<BR> Eu sugiro tentar usar o XML::Simple, que vai fazer o mesmo <BR>trabalho, mas vai te dar uma estrutura um pouco mais sofisticada e <BR>menos "entupida" com as porcarias que você tem nos meta-dados do
seu <BR>XML.<BR><BR> Outras sugestões:<BR><BR> * use XML::Compile, que permite validar os dados do XML usando uma <BR>definição de schema<BR> * use strict e warnings, que permite manter a sua sanidade mental.<BR><BR> E uma observação: normalmente, processamento de XML se faz via <BR>XPath ou XML::Parser (orientado a eventos, o default). Se você está <BR>tentando construir um leitor de configurações, eu sugiro que olhe o <BR>Config::General, que resolve o problema de uma forma elegantíssima e <BR>sem chateação.<BR><BR> Putamplexos!<BR>--<BR>Luis Motta Campos (a.k.a. Monsieur Champs) is a software engineer,<BR>Perl fanatic evangelist, and amateur {cook, photographer}<BR><BR><BR>_______________________________________________<BR>Cascavel-pm mailing list<BR>Cascavel-pm@pm.org<BR><A href="http://mail.pm.org/mailman/listinfo/cascavel-pm"
target=_blank>http://mail.pm.org/mailman/listinfo/cascavel-pm</A></DIV></DIV><BR></DIV></div><br>
<hr size=1>Novo <a href="http://yahoo.com.br/oqueeuganhocomisso ">Yahoo! Cadê?</a> - Experimente uma nova busca. </body></html>