Leitura de dados a partir de um XML

5 respostas
A

Estou com um problema, tenho um xml que deverá receber dados de um arquivo TXT e gerar uma saída formatada em csv. Gostaria de saber se a melhor maneira seria com JDOM e como ficaria neste caso.

por exemplo:

entrada: 2007-11-01;10.01;1234567891234567890123456789

XML:







COLUMN1

Date

yyyy-mm-dd

dd-mm-yyyy





COLUMN2

Numeric

999,999,999.99

999.999.999,99





COLUMN3

String

A(30)

A(10)

5 Respostas

P

Depende o caso, em geral o DOM é utilizado para leitura de xmls menores, pois o xml é carregado (em formato árvore) em memória. Já o SAX é um pouco mais complicado, pois seu processamento é orientado a eventos, entretando consome menos memória, porque não armazena o xml em memória (apenas vai lendo o arquivo xml e chamando o evento).

Se o seu caso se encaixa no primeiro, pode ser mais fácil, entretanto, pela descrição do teu problema, eu utilizaria o SAX.

Material é o que mais tem sobre esse assunto. Pesquise por SAX e JDOM no google que tu acha fácil.

B

Bom dia adrdangelo,

Eu recomendo o seguinte artigo daqui do GUJ mesmo: http://www.guj.com.br/java.tutorial.artigo.144.1.guj
um outro tutorial que me ajudou bastante uma vez que eu precisei trabalhar com xml foi esse aqui: http://www.guj.com.br/java.tutorial.artigo.22.1.guj

Espero ter ajudado
att

A

Valeu Bruno! me ajudou sim…

estou um outra dúvida…

eu tenho que lançar no XML o a entrada não formatada: 2007-11-01;10.01;[telefone removido]
para que o do meu xml me retorne ele formatado…
Como são vários registros não formatados, dentro de uma estrutura de repetição eu teria que informar que a parte do registro até o caractere ‘;’ deverá ser inserida no do elemento Data e continuar varrendo a estrutura a partir deste ‘;’ até o proximo, e assim por diante até o final de cada linha do arquivo.

será q alguém pode me dar uma luz…
:slight_smile:

T

cara eu utilizaria o XStream ou JAXB e depois faria o export para csv… mto mais fácil… com isso sourceforge.net/projects/javacsv/

B

adrdangelo,

String entrada = "2007-11-01;10.01;1234567891234567890123456789";

Você pode usar o seguinte método: String[] vetor = entrada.split(";");
isso irá criar um vetor de string em com todos os conteúdos da sua string entre os “;”
ou seja, o retorno seria:

o valor de vetor[0] seria “2007-11-01”
o valor de vetor[1] seria “10.01”
o valor de vetor[2] seria “1234567891234567890123456789”

Espero ter ajudado

Att

Criado 17 de janeiro de 2008
Ultima resposta 18 de jan. de 2008
Respostas 5
Participantes 4