Olá pessoal,
Tenho uma dúvida neste método, que deve apresentar os campos presentes na hierarquia de um xml existente. A análise deve ser realizada de maneira recursiva.
Exemplo de um xml com a mesma estrutura dos que estou uitilizando.
<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>
Meu método:
public void apresentaCatalogo(File f, CatalogoSistemaDocument pod){
int i=0;
treeData = new TreeNodeBase("foo-folder", "Catalogo", false);
//cria uma instância de Elemento na qual é atribuída a raíz do documento
Elemento elemento[] = pod.getCatalogoSistema().getElementos().getElementoArray();
//percorrendo todos os <elemento> filhos que existem no elemento raiz
Elemento[] elemento1 = elemento[i].getElementos().getElementoArray();
for(i=0; i<elemento.length; i++){
TreeNodeBase authorNode = new TreeNodeBase ("declaracao", elemento1[i].getNome(), false);
treeData.getChildren().add(authorNode);
}
//coletando uma possível classe sendo representada pelo elemento sendo analisado.
Elementos elementos = elemento[i].getElementos();
//desce na hierarquia para a apresentação dos atributos folha.
if (elementos != null){
apresentaCatalogo(f, pod);
}
else{
Elemento[] elemento2 = elemento1[i].getElementos().getElementoArray();
TreeNodeBase bookNode3 = new TreeNodeBase ("declaracao", elemento1[i].getNome(), false);
treeData.getChildren().add(bookNode3);
}
Está ocorrendo um loop infinito no elemento raíz e não consigo coletar os outros elementos.
Alguém pode me ajudar?? É urgentíssimo!!
Obrigada