Ler elementos de um XML

Estou tentando ler os elementos de um xml. Preciso fazer uma função recursiva que percorra todo o xml e mostre seus elementos.

Como posso fazer isso?

Meu xml:

 <cat:CatalogoSistema xmlns:cat="http://nowhere.to.go">
   <cat:Sistema>Comercio</cat:Sistema>
   <cat:Elementos>
     <cat:Elemento>
       <cat:Nome>ComercioRaiz</cat:Nome>
       <cat:Tipo>ComercioRaiz</cat:Tipo>
       <cat:Elementos>
         <cat:Elemento>
           <cat:Nome>ComercioPadaria</cat:Nome>
           <cat:Tipo>ComercioPadaria</cat:Tipo>
           <cat:Elementos>
             <cat:Elemento>
               <cat:Nome>ComercioRaizPadariafarinha</cat:Nome>
               <cat:Tipo>java.math.BigDecimal</cat:Tipo>
             </cat:Elemento>
             <cat:Elemento>
               <cat:Nome>ComercioRaizPadariaoleo</cat:Nome>
               <cat:Tipo>java.math.BigDecimal</cat:Tipo>
             </cat:Elemento>
             <cat:Elemento>
               <cat:Nome>ComercioRaizPadariafermento</cat:Nome>
               <cat:Tipo>java.math.BigDecimal</cat:Tipo>
             </cat:Elemento>
             <cat:Elemento>
               <cat:Nome>ComercioRaizPadarialeiteDesnatado</cat:Nome>
               <cat:Tipo>java.math.BigDecimal</cat:Tipo>
             </cat:Elemento>
             <cat:Elemento>
               <cat:Nome>ComercioRaizPadariamacarrao</cat:Nome>
               <cat:Tipo>java.math.BigDecimal</cat:Tipo>
             </cat:Elemento>
             <cat:Elemento>
               <cat:Nome>ComercioRaizPadariaaguaMineral</cat:Nome>
               <cat:Tipo>java.math.BigDecimal</cat:Tipo>
             </cat:Elemento>
 	    </cat:Elementos>
 	 </cat:Elemento>
 	</cat:Elementos>
     </cat:Elemento>
   </cat:Elementos>
 </cat:CatalogoSistema>

Fiz dessa forma:

Elemento[] itemArray = pod.getCatalogoSistema().getElementos().getElementoArray();

for (int i=0; i<itemArray.length; i++){
System.out.println("\n"+itemArray[i].getNome());
System.out.println("\n"+itemArray[i].getTipo());
}

Mas só aparece:

ComercioRaiz

ComercioRaiz

Alguém pode me ajudar??

eu nao tenho como testar por causa dos seus metodos getElementos, getBlaBlaBla, etc… mas acho q eh isso…

Elemento&#91;&#93; itemArray = pod.getCatalogoSistema&#40;&#41;.getElementos&#40;&#41;.getElementoArray&#40;&#41;;

for &#40;int i=0; i&lt;itemArray.length; i++&#41; &#123;
    // Aqui esta Comercio Raiz
    System.out.println&#40;&quot;\n&quot;+itemArray&#91;i&#93;.getNome&#40;&#41;&#41;;
    System.out.println&#40;&quot;\n&quot;+itemArray&#91;i&#93;.getTipo&#40;&#41;&#41;;

    Elemento&#91;&#93; itemPadaria = itemArray&#91;i&#93;..getElementos&#40;&#41;.getElementoArray&#40;&#41;;
    for &#40;int i=0; i&lt;itemPadaria.length; i++&#41; &#123;
        // Aqui esta Comercio Padaria
        System.out.println&#40;&quot;\n&quot;+itemPadaria&#91;i&#93;.getNome&#40;&#41;&#41;;
        System.out.println&#40;&quot;\n&quot;+itemPadaria&#91;i&#93;.getTipo&#40;&#41;&#41;;

        Elemento&#91;&#93; itemProduto = itemPadaria&#91;i&#93;..getElementos&#40;&#41;.getElementoArray&#40;&#41;;
        for &#40;int i=0; i&lt;itemProduto.length; i++&#41;&#123;
            // Aqui estao os produtos
            System.out.println&#40;&quot;\n&quot;+itemProduto&#91;i&#93;.getNome&#40;&#41;&#41;;
            System.out.println&#40;&quot;\n&quot;+itemProduto&#91;i&#93;.getTipo&#40;&#41;&#41;;
        &#125; 
    &#125; 
&#125; 

Assim consigo imprmir todos os elementos do xml. O problema é que não poderei fazer um for para cada elemento. Meu xml na verdade é imenso, aqui está só uma parte dele para teste.

Preciso fazer uma função recursiva que faça este trabalho de percorrer o xml.