Parseando XML com DOM (maneira porca?)  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
Vegetto
GUJ Ranger

Membro desde: 22/06/2003 15:39:49
Mensagens: 797
Localização: Campinas
Offline

Olá a todos,

É a primeira vez que eu estou tentando parsear um xml com DOM. Depois de procurar no google e no fórum, não consegui achar uma maneira que me pareça inteligente de parsear um XML

Aqui está parte do código:



O código fica um lixo, cheio de IFs, uma bosta....

A pergunta é a seguinte: alguém sabe uma maneira melhor de fazer isso emporcalhando menos o código?

Eu tinha visto o XPath, parece ficar melhor, mas pelo o que eu entendi ele não é distribuido junto com o JRE1.4, aí ferrou... já que essa aplicação roda numa applet e tem que ser o mais lightweight possível..

Muito obrigado,
Filipe Sabella
GUJ Expert

Membro desde: 12/03/2003 11:25:57
Mensagens: 4680
Offline

Bem, você pode usar o XStream, cujo jar tem apenas 110kb. Mas se isso for demais pra você, vai ter que se acostumar com o DOM mesmo. Leia com cuidado a api dele, tem uns métodos interessantes.

Former LIPE.
[ICQ]
Vegetto
GUJ Ranger

Membro desde: 22/06/2003 15:39:49
Mensagens: 797
Localização: Campinas
Offline

LIPE wrote:Bem, você pode usar o XStream, cujo jar tem apenas 110kb. Mas se isso for demais pra você, vai ter que se acostumar com o DOM mesmo. Leia com cuidado a api dele, tem uns métodos interessantes.


Eu conheço o xstream, mas como o formato do XML não sou eu que controlo, não rola nesse caso...

Valew pela dica LIPE!

[]´s
renatosilva
GUJ Master

Membro desde: 16/12/2004 17:09:19
Mensagens: 1787
Offline

Commons Digester para ler usando XPath, é bem simples

Se precisar escrever de volta, pode arriscar usar um tal de XML Vomiter, é um projeto de um fulano aí

This message was edited 1 time. Last update was at 01/02/2005 11:41:39

kuchma
Moderador
[Avatar]

Membro desde: 17/01/2003 19:36:16
Mensagens: 1231
Localização: Curitiba - PR
Offline

Existe uma outra API chamada JDOM que eh interessante para fazer parse/geracao de XML tambem.


Marcio Kuchma

E tu, Belém-Efrata, pequena demais para figurar como grupo de milhares de Judá, de ti me sairá o que há de reinar em Israel, e cujas origens são desde os tempos antigos, desde os dias da eternidade. Mq 5:2, Miquéias, 750 AC aprox.
[WWW] [ICQ]
Vegetto
GUJ Ranger

Membro desde: 22/06/2003 15:39:49
Mensagens: 797
Localização: Campinas
Offline

Obrigado todos! mas tanto o Commons Digester como o JDOM são bibliotecas muito grandes, o que impossibilita que eu as use...

Uma maneira que eu estou testando agora é fazer o downcastind de um Node para um Element, assim eu consigo usar o getElementsByTagName e elemino o for os Ifs...

Vou colocar o código aqui, caso alguém futuramente tenha o mesmo problema que eu tive...

renatosilva
GUJ Master

Membro desde: 16/12/2004 17:09:19
Mensagens: 1787
Offline

Vegetto wrote:Obrigado todos! mas tanto o Commons Digester como o JDOM são bibliotecas muito grandes


O JAR do Digester tem 165KB é muita coisa?
Vegetto
GUJ Ranger

Membro desde: 22/06/2003 15:39:49
Mensagens: 797
Localização: Campinas
Offline

renato3110 wrote:
Vegetto wrote:Obrigado todos! mas tanto o Commons Digester como o JDOM são bibliotecas muito grandes


O JAR do Digester tem 165KB é muita coisa?


Não tanto, mas ele tem dependências externas... aí que pega...

valew!
renatosilva
GUJ Master

Membro desde: 16/12/2004 17:09:19
Mensagens: 1787
Offline

ih então ferrou, nem sabia disso, que feio

Eu tava pensando em criar uma parada que fosse o contrário do XML Vomiter, como o Digester, e que fosse independente e pequeno, com o controle que o XStream não dá, mas sem usar XPath. A ferramenta trabalharia diretamente sobre o texto do documento sem transformá-lo em nós DOM ou usar SAX, ou coisa parecida.

Porém parsear um XML é um pouco mais complicado do que gerá-lo.


Vegetto
GUJ Ranger

Membro desde: 22/06/2003 15:39:49
Mensagens: 797
Localização: Campinas
Offline

Legal esse esquema, Renato...

Eu estava pensando até em fazer algo com regexp pra evitar de carregar todos os jars de parsers da sun e talz... Mas eu me lembrei que eu li, em algum lugar, que quando você usa expressões regulares para solucionar um problema, você ganha dois outros... Na época me pareceu bastante razoável a colocação do cara que escreveu isso....
renatosilva
GUJ Master

Membro desde: 16/12/2004 17:09:19
Mensagens: 1787
Offline

Mas por que você precisa economizar espaço?

Mesmo com as dependências acho que o Digester não passa de 1MB.
Vegetto
GUJ Ranger

Membro desde: 22/06/2003 15:39:49
Mensagens: 797
Localização: Campinas
Offline

renato3110 wrote:Mas por que você precisa economizar espaço?

Mesmo com as dependências acho que o Digester não passa de 1MB.


Porque a aplicação roda numa applet, e com cento e poucos Kb já há reclamação de demora para carregar... imagei com um 1mb
renatosilva
GUJ Master

Membro desde: 16/12/2004 17:09:19
Mensagens: 1787
Offline

É você já falou isso mas eu não prestei atenção...

Bem, então vamos fazer uma ferramenta leve para isso!!!!






Viajando na maionese

This message was edited 1 time. Last update was at 01/02/2005 17:27:10

kuchma
Moderador
[Avatar]

Membro desde: 17/01/2003 19:36:16
Mensagens: 1231
Localização: Curitiba - PR
Offline

Vegetto wrote:Mas eu me lembrei que eu li, em algum lugar, que quando você usa expressões regulares para solucionar um problema, você ganha dois outros... Na época me pareceu bastante razoável a colocação do cara que escreveu isso....


Razoavel por que? Pra mim parece FUD de quem nao sabe como aplicar as regexp.


Marcio Kuchma

E tu, Belém-Efrata, pequena demais para figurar como grupo de milhares de Judá, de ti me sairá o que há de reinar em Israel, e cujas origens são desde os tempos antigos, desde os dias da eternidade. Mq 5:2, Miquéias, 750 AC aprox.
[WWW] [ICQ]
Vegetto
GUJ Ranger

Membro desde: 22/06/2003 15:39:49
Mensagens: 797
Localização: Campinas
Offline

kuchma wrote:
Vegetto wrote:Mas eu me lembrei que eu li, em algum lugar, que quando você usa expressões regulares para solucionar um problema, você ganha dois outros... Na época me pareceu bastante razoável a colocação do cara que escreveu isso....


Razoavel por que? Pra mim parece FUD de quem nao sabe como aplicar as regexp.


Marcio Kuchma


Marcio,

Dependendo do que vai ser feito com regexp o trabalho que vai dar pra manter não compensa. Mas é isso que você disse, tem que saber aonde aplicar, sair por aí usando em tudo, não é uma boa. E esse era o argumento do cara que disse isso.

http://groups-beta.google.com/group/alt.religion.emacs/msg/b59f4a602fb68f0a?rnum=1
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team