<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>&nbsp;&nbsp;&nbsp; Oi Luiz...</DIV>
<DIV>&nbsp;&nbsp;&nbsp; Pow, obrigadão. Vou seguir&nbsp;as sugestões... Estudando um pouco mais estava caminhando justamente para estas soluções.</DIV>
<DIV>&nbsp;&nbsp;&nbsp; Abraço.<BR>&nbsp;</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 &lt;luismottacampos@yahoo.co.uk&gt;<BR>Para: Cascavel Perl Mongers &lt;cascavel-pm@pm.org&gt;<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>&gt;&nbsp;&nbsp;&nbsp;&nbsp; Olá amigos da lista,<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp; Estou apanhando com uma bobeirinha e acredito que os amigos&nbsp;&nbsp;<BR>&gt; possam me ajudar.<BR>&gt; Já fiz parsers usando Handlers para grandes documentos e conheço&nbsp;&nbsp;<BR>&gt; bem o funcionamento.<BR><BR>&nbsp;&nbsp; Eu vou acreditar em você ;-)<BR><BR>&gt; Agora estou tentando criar um parser usando a opção "Tree", nunca&nbsp;&nbsp;<BR>&gt; tinha utilizado este método e apesar da simplicidade exposta na&nbsp;&nbsp;<BR>&gt; "man page" estou apanhando.<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp; Segue um script que fiz para testar o funcionamento :<BR>&gt;<BR>&gt; #!/usr/bin/perl<BR>&gt; use XML::Parser;<BR>&gt; my $parser=new XML::Parser;<BR>&gt; my $p=new XML::Parser(Style =&gt; 'Tree');<BR>&gt; my
 $xml=$p-&gt;parse('&lt;inquiry&gt;'<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .'&lt;city&gt;2&lt;/city&gt;'<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .'&lt;region&gt;CENTER&lt;/region&gt;'<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 .'&lt;childages&gt;'<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .'&lt;childage&gt;2&lt;/childage&gt;'<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .'&lt;childage&gt;11&lt;/childage&gt;'<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 .'&lt;/childages&gt;'<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .'&lt;/inquiry&gt;');<BR>&gt; print " 1º\t",$xml,"\n\n";<BR>&gt; print " 2º\t",$$xml[0],"\n\n";<BR>&gt; print " 3º\t",$$xml[1],"\n\n";<BR>&gt; print " 4º\t",$$xml[1][1],"\n\n";<BR>&gt; print " 5º\t",$$xml[1][2],"\n\n";<BR>&gt; print " 6º\t",$$xml[1][3],"\n\n";<BR>&gt; print " 7º\t",$$xml[1][4],"\n\n";<BR>&gt; print " 8º\t",$$xml[1][5],"\n\n";<BR>&gt; print " 9º\t",$$xml[1][6],"\n\n";<BR>&gt;<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp; O resultado no console é o seguinte :<BR>&gt;<BR>&gt; 1º&nbsp;&nbsp;&nbsp;&nbsp; ARRAY(0x815a0e4)<BR>&gt;&nbsp;&nbsp;2º&nbsp;&nbsp;&nbsp;&nbsp; inquiry<BR>&gt;&nbsp;&nbsp;3º&nbsp;&nbsp;&nbsp;&nbsp; ARRAY(0x815a180)<BR>&gt;&nbsp;&nbsp;4º&nbsp;&nbsp;&nbsp;&nbsp;
 city<BR>&gt;&nbsp;&nbsp;5º&nbsp;&nbsp;&nbsp;&nbsp; ARRAY(0x8220f90)<BR>&gt;&nbsp;&nbsp;6º&nbsp;&nbsp;&nbsp;&nbsp; region<BR>&gt;&nbsp;&nbsp;7º&nbsp;&nbsp;&nbsp;&nbsp; ARRAY(0x8220f30)<BR>&gt;&nbsp;&nbsp;8º&nbsp;&nbsp;&nbsp;&nbsp; childages<BR>&gt;&nbsp;&nbsp;9º&nbsp;&nbsp;&nbsp;&nbsp; ARRAY(0x82130f4)<BR>&gt; 10º<BR>&gt; 11º<BR>&gt; 12º<BR>&gt;<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp; Minha dúvida é : Como navegar pelos elementos. :(<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp; Muitíssimo obrigado galera.<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp; Abraço.<BR>&gt;<BR>&gt;<BR>&gt; Daniel ® Antunes<BR>&gt; profissional de informática<BR>&gt; msn daniel.legend@terra.com.br<BR>&gt; mobile + 55 11 8965 2999<BR>&gt; gnu/linux user #238553<BR><BR>&nbsp;&nbsp; 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 =&gt; 'Tree' );<BR>my $tree = $parser-&gt;parse( *DATA );<BR><BR>print
 Dumper( $tree );<BR><BR>__DATA__<BR>&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt;<BR>&lt;inquiry&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; &lt;city&gt;2&lt;/city&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; &lt;region&gt;CENTER&lt;/region&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; &lt;childages&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;childage&gt;2&lt;/childage&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;childage&gt;11&lt;/childage&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; &lt;/childages&gt;<BR>&lt;/inquiry&gt;<BR>__END__<BR><BR>&nbsp;&nbsp; E obtive o mesmo resultado.<BR><BR>&nbsp;&nbsp; Agora, para "navegar" nestes elementos, automaticamente, você vai&nbsp;&nbsp;<BR>precisar construir funções especializadas.<BR>&nbsp;&nbsp; Eu sugiro tentar usar o XML::Simple, que vai fazer o mesmo&nbsp;&nbsp;<BR>trabalho, mas vai te dar uma estrutura um pouco mais sofisticada e&nbsp;&nbsp;<BR>menos "entupida" com as porcarias que você tem nos meta-dados do
 seu&nbsp;&nbsp;<BR>XML.<BR><BR>&nbsp;&nbsp; Outras sugestões:<BR><BR>&nbsp;&nbsp; * use XML::Compile, que permite validar os dados do XML usando uma&nbsp;&nbsp;<BR>definição de schema<BR>&nbsp;&nbsp; * use strict e warnings, que permite manter a sua sanidade mental.<BR><BR>&nbsp;&nbsp; E uma observação: normalmente, processamento de XML se faz via&nbsp;&nbsp;<BR>XPath ou XML::Parser (orientado a eventos, o default). Se você está&nbsp;&nbsp;<BR>tentando construir um leitor de configurações, eu sugiro que olhe o&nbsp;&nbsp;<BR>Config::General, que resolve o problema de uma forma elegantíssima e&nbsp;&nbsp;<BR>sem chateação.<BR><BR>&nbsp;&nbsp; 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>