| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/03/2010 09:23:59
|
alex@ander
JavaBaby
![[Avatar]](/images/avatar/a9b7ba70783b617e9998dc4dd82eb3c5.jpg)
Membro desde: 28/04/2003 23:23:35
Mensagens: 78
Localização: São Paulo
Offline
|
Senhores,
existe alguma "normalização" de arquivos XML que mescle nós de atributos chave iguais ? Explicando melhor: Tenho algumas tabelas no banco de dados que forman um estrutura em árvore. Ao criar uma query para recuperar todos os registros de todos os itens e sub-itens, recebo um resultSet que tem em sua primeira coluna o item pai repetido várias vezes. Outra coluna pai, repetida algumas vezes dentro do item pai anteiror, e assim por diante ...
folder attribute attribute attribute folder attribute attribute folder attribute
A x x x 1 x x Z x
A x x x 1 x x Z x
A x x x 1 x x Y x
A x x x 2 x x Y x
A x x x 2 x x E x
A x x x 2 x x E x
A x x x 3 x x Z x
A x x x 1 x x Z x
A x x x 1 x x Y x
B x x x 1 x x Y x
B x x x 1 x x E x
B x x x 5 x x E x
B x x x 5 x x Z x
B x x x 5 x x Z x
C x x x 2 x x Y x
Ao enviar isso para um programa Desktop feito em Java, optei por faze-lo via XML. Como cada nó correponde a uma linha, imaginei que pudesse existir algum processo que identificasse os nós "folder" de mesmo nome (atributo name por exemplo) e os mesclasse de modo que o XML adiquirisse ramificações a partir desses nós. Devo fazer isso na "unha" ? Será que existe algo que faça isso para mim ?
A
|_ 1
| |_ Z
| |_ Y
|
|_ 2
|_ 3
B
|_ 1
|_ 5
C
|_ 2
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/03/2010 09:44:00
|
Hebertbc
JavaChild
![[Avatar]](/images/avatar/4a91f7314e289f078ec79edba82bc972.jpg)
Membro desde: 07/11/2008 20:27:15
Mensagens: 113
Localização: Campo Grande / MS
Offline
|
Vc quer algo parecido com isso?
|
C'est la vie monsieur excentrique... |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/03/2010 10:22:33
|
alex@ander
JavaBaby
![[Avatar]](/images/avatar/a9b7ba70783b617e9998dc4dd82eb3c5.jpg)
Membro desde: 28/04/2003 23:23:35
Mensagens: 78
Localização: São Paulo
Offline
|
É nesse sentido sim, porém virão em seguida outras sequencias tal como a você mostrou que terão "path's" comuns:
Como faria para que ficasse assim:
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/03/2010 10:45:41
|
Hebertbc
JavaChild
![[Avatar]](/images/avatar/4a91f7314e289f078ec79edba82bc972.jpg)
Membro desde: 07/11/2008 20:27:15
Mensagens: 113
Localização: Campo Grande / MS
Offline
|
É so vc criar uma logica pra gerar um objeto nesse formato, depois os xstream faz o resto.
(Edit) Um metodo recursivo resolve seu problema.
This message was edited 1 time. Last update was at 17/03/2010 10:47:15
|
C'est la vie monsieur excentrique... |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/03/2010 11:24:04
|
alex@ander
JavaBaby
![[Avatar]](/images/avatar/a9b7ba70783b617e9998dc4dd82eb3c5.jpg)
Membro desde: 28/04/2003 23:23:35
Mensagens: 78
Localização: São Paulo
Offline
|
Pelo que vi o XTream funciona tal como o XMLDecoder (JavaBeans). Não sei se entendi de forma correta mas o processo de deserialização cria a instância do objeto. Em seguida eu precisari acrescentar sub-itens em uma instância já criada (por exemplo: folder A1 já criado >> criar folder A2 dentro de A) a partir de outro objeto em deserialização ??? Vou estudar a partir daqui. Obrigado.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/03/2010 11:48:57
|
alex@ander
JavaBaby
![[Avatar]](/images/avatar/a9b7ba70783b617e9998dc4dd82eb3c5.jpg)
Membro desde: 28/04/2003 23:23:35
Mensagens: 78
Localização: São Paulo
Offline
|
É ... não enetendi !
Como eu "jogo" o próximo nó do XML dentro do Folder já criado ?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/03/2010 15:04:28
|
alex@ander
JavaBaby
![[Avatar]](/images/avatar/a9b7ba70783b617e9998dc4dd82eb3c5.jpg)
Membro desde: 28/04/2003 23:23:35
Mensagens: 78
Localização: São Paulo
Offline
|
Por então pessoal ... deixemos o XML de lado um pouco e usemos a resultSet no lugar. Lendo linha por linha da view, inserimos sobre um "bean" (parecido com o que o nosso amigo Hebertbc nos deu) os dados provenientes dessa linha. Colocamos esse bean em uma List. Em seguida, quando carregamos o segundo bean, verificamos elemento a elemento (aqueles que representam um "folder") se ele já existe em nossa List e em caso afirmativo, obtemos uma referência desse ao invés de uma nova instância. De forma simplificada é isso. Obrigado Hebertbc !
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/03/2010 11:51:38
|
Hebertbc
JavaChild
![[Avatar]](/images/avatar/4a91f7314e289f078ec79edba82bc972.jpg)
Membro desde: 07/11/2008 20:27:15
Mensagens: 113
Localização: Campo Grande / MS
Offline
|
Opa... desculpa a demora mais tava meio tenso la no trampo... qualquer coisa so mandar pm... vlw ae
|
C'est la vie monsieur excentrique... |
|
|
 |
|
|