Meus deus do ceu! nÃo consigo ler o xml

Pessoal, é o seguinte! EU to usando o DOM para ler mensagens XML, mas dêm uma olhada num exemplo de estrutura que estou utilizando:


<?xml version=“1.0” encoding=“ISO-8859-1”?>
<PRIMITIVA nome=“MENSAGEM”>

<CLASSE nome=“ENTRADA”>

<CLASSE nome=“AUTENTICACAO”>

&lt;CAMPO nome="USUARIO"&gt;user&lt;/CAMPO&gt;
&lt;CAMPO nome="SENHA"&gt;password&lt;/CAMPO&gt;
&lt;CAMPO nome="ORIGEM"&gt;system&lt;/CAMPO&gt;

</CLASSE>

<CLASSE nome=“DADOS”>

&lt;CAMPO nome="CLIENTE"&gt;&lt;/CAMPO&gt;
&lt;CAMPO nome="EMPRESA"&gt;&lt;/CAMPO&gt;
&lt;CAMPO nome="ENDERECO"&gt;&lt;/CAMPO&gt;
&lt;CAMPO nome="CIDADE"&gt;&lt;/CAMPO&gt;

&lt;CLASSE nome="Grupo_Telefones"&gt;

  &lt;CLASSE nome="Telefone"&gt;

    &lt;CAMPO nome="Telefone"&gt;&lt;/CAMPO&gt;
    &lt;CAMPO nome="Tipo_Telefone"&gt;&lt;/CAMPO&gt;
    &lt;CAMPO nome="Nome_Contato"&gt;&lt;/CAMPO&gt;

  &lt;/CLASSE&gt;

&lt;/CLASSE&gt;		    

</CLASSE>

</CLASSE>

<CLASSE nome=“SAIDA”>

<CLASSE nome=“MENSAGEM”>

&lt;CAMPO nome="CODIGO"&gt;&lt;/CAMPO&gt;
&lt;CAMPO nome="DESCRICAO"&gt;&lt;/CAMPO&gt;

</CLASSE>

<CLASSE nome=“ATENDENTE”>

&lt;CAMPO nome="NOME"&gt;&lt;/CAMPO&gt;
&lt;CAMPO nome="SETOR"&gt;&lt;/CAMPO&gt;
&lt;CAMPO nome="RAMAL"&gt;&lt;/CAMPO&gt;

</CLASSE>

</CLASSE>

</PRIMITIVA>


Meu código é mais ou menos assim:

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance&#40;&#41;;
DocumentBuilder db = dbf.newDocumentBuilder&#40;&#41;;
Document doc = db.parse&#40;arquivoXML&#41;;
Element elem = doc.getDocumentElement&#40;&#41;;

NodeList nl = elem.getElementsByTagName&#40;&quot;CLASSE&quot;&#41;;

for&#40; int i=0; i &lt; nl.getLength&#40;&#41;; i++ &#41; &#123;

     Element classe = &#40;Element&#41; nl.item&#40; i &#41;;
     String nomeClasse = classe.getAttribute&#40;&quot;nome&quot;&#41;;

     NodeList children = classe.getElementsByTagName&#40;&quot;CAMPO&quot;&#41;;

     for&#40; int j=0; j &lt; children.getLength&#40;&#41;; j++ &#41; &#123;

          Element campo = &#40;Element&#41; children.item&#40;j&#41;;
          String nomeCampo = campo.getAttribute&#40;&quot;nome&quot;&#41;;
     &#125;
&#125;

O que acontece é o seguinte:
Quando uso o primeiro comando (getElementsByTagName(“CLASSE”):wink: ele pega todos os nos chamados CLASSE, e eu queria apenas os que estão logo abaixo do nó PRIMITIVA, mas até ai tudo bem. Porém quando uso o segundo comando para pegar os campos (getElementsByTagName(“CAMPO”);), ele também pega todos os nos chamados CAMPO do documento, e não apenas os que estão dentro do elemento que criei com o no CAMPO, conseguiram entender?
Então não sei dentro que qual nó CLASSE está o nó CAMPO…
Como posso fazer isso? Como vocês costumam tratar arquivos XML?

Valeu pessoal![/code][/quote]

elem.getElementsByTagName(“CLASSE”);

é provavel que pegue todos mesmo, no formato de array.

Se você tiver como, informe a posição no array.

Outra sugestão é… ao inves de usar <classe name=“Mensagem”>

use:

&lt;mensagem&gt; &lt;codigo&gt;123&lt;/codigo&gt; &lt;/mensagem&gt;