Ler txt para gerar um xml dele

20 respostas
M

oi. tenho a estrutura assim ó:

[18/01/2013 15:26:19] Revista Mãe => Início da Execução
[18/01/2013 15:26:19] 		Revista Filha => Início da Execução
[18/01/2013 15:26:19] 				Revista Neta  => Início da Execução
[18/01/2013 15:26:19] 				Revista   => Executando
[18/01/2013 15:26:19] 				Revista   => Início execução 
[18/01/2013 15:26:19] 				Revista   => Valores 
                      					@.codigo = 4
                      					@.nome = Cupom Brinde
                      					@.tipoDeCupom = Vale 
[18/01/2013 15:26:19] 						Revista Bisneta  => Início da Execução
[18/01/2013 15:26:27] 								SUCESSO 
[18/01/2013 15:26:28] 								SUCESSO 
[18/01/2013 15:26:31] 								SUCESSO 
[18/01/2013 15:26:31] 								SUCESSO 
[18/01/2013 15:26:31] 								SUCESSO 
[18/01/2013 15:26:32] 								SUCESSO 
[18/01/2013 15:26:33] 								SUCESSO 
[18/01/2013 15:26:33] 						Revista Bisneta => Executado com SUCESSO
                      						Duração Total: 13s 948ms
[18/01/2013 15:26:33] 						Revista Bisneta => Início da Execução
[18/01/2013 15:26:33] 								SUCESSO 
[18/01/2013 15:26:33] 								SUCESSO 
[18/01/2013 15:26:36] 								SUCESSO 
[18/01/2013 15:26:37] 								SUCESSO 
[18/01/2013 15:26:38] 								ERRO 
[18/01/2013 15:26:38] 								SUCESSO 
[18/01/2013 15:26:38] 								SUCESSO 
[18/01/2013 15:26:38] 								SUCESSO 
[18/01/2013 15:26:38] 						Revista Bisneta => Executado com INSTABILDADE
                      						Duração Total: 5s 469ms
[18/01/2013 15:27:48] 				Revista Neta => Executado com FALHA 
                      				Duração Total: 1m 28s 954ms
[18/01/2013 15:27:48] 		Revista Filha => Executado com FALHA
                      		Duração Total: 1m 28s 955ms
[18/01/2013 15:27:48] Revista Mãe => Executado com FALHA
                      Duração Total: 1m 28s 963ms

ja tentei de tudo, tudo tudo e nao consigo ler ele pois é dificil, gerar o xml é mais facil pois posso popular objetos e usar xstream, por favor me ajudem.

20 Respostas

M

nao consigo ler esse padrao… pois podem vir vários Mae, vários netos por exemplo

M

já tentei jogar todo o txt em um list para consumir menos tempo, mas ainda tá complicando eu ja tentei varias logicas mas nao achei uma maneira de conseguir ler esse arquivo com uma mae, n filhos, n netos e n bisnetos…

ViniGodoy

Por favor, evite usar mensagens apelativas ou emocionais no título do seu tópico, pois isso dá sentido de urgência (DESESPERADA, URGENTE, SOCORRO, PELAMORDEDEUS, etc).

A

O objetivo é expressar urgência mesmo… Ñ pode? Rs.

A

mariazinhahappy:
oi. tenho a estrutura assim ó:

[18/01/2013 15:26:19] Revista Mãe => Início da Execução
[18/01/2013 15:26:19] 		Revista Filha => Início da Execução
[18/01/2013 15:26:19] 				Revista Neta  => Início da Execução
[18/01/2013 15:26:19] 				Revista   => Executando
[18/01/2013 15:26:19] 				Revista   => Início execução 
[18/01/2013 15:26:19] 				Revista   => Valores 
                      					@.codigo = 4
                      					@.nome = Cupom Brinde
                      					@.tipoDeCupom = Vale 
[18/01/2013 15:26:19] 						Revista Bisneta  => Início da Execução
[18/01/2013 15:26:27] 								SUCESSO 
[18/01/2013 15:26:28] 								SUCESSO 
[18/01/2013 15:26:31] 								SUCESSO 
[18/01/2013 15:26:31] 								SUCESSO 
[18/01/2013 15:26:31] 								SUCESSO 
[18/01/2013 15:26:32] 								SUCESSO 
[18/01/2013 15:26:33] 								SUCESSO 
[18/01/2013 15:26:33] 						Revista Bisneta => Executado com SUCESSO
                      						Duração Total: 13s 948ms
[18/01/2013 15:26:33] 						Revista Bisneta => Início da Execução
[18/01/2013 15:26:33] 								SUCESSO 
[18/01/2013 15:26:33] 								SUCESSO 
[18/01/2013 15:26:36] 								SUCESSO 
[18/01/2013 15:26:37] 								SUCESSO 
[18/01/2013 15:26:38] 								ERRO 
[18/01/2013 15:26:38] 								SUCESSO 
[18/01/2013 15:26:38] 								SUCESSO 
[18/01/2013 15:26:38] 								SUCESSO 
[18/01/2013 15:26:38] 						Revista Bisneta => Executado com INSTABILDADE
                      						Duração Total: 5s 469ms
[18/01/2013 15:27:48] 				Revista Neta => Executado com FALHA 
                      				Duração Total: 1m 28s 954ms
[18/01/2013 15:27:48] 		Revista Filha => Executado com FALHA
                      		Duração Total: 1m 28s 955ms
[18/01/2013 15:27:48] Revista Mãe => Executado com FALHA
                      Duração Total: 1m 28s 963ms

ja tentei de tudo, tudo tudo e nao consigo ler ele pois é dificil, gerar o xml é mais facil pois posso popular objetos e usar xstream, por favor me ajudem.

C já começou alguma lógica/raciocínio?

A

Á princípio, acredito q um loop iria resolver… Por favor, detalhe o q vc já fez, assim tento te ajudar. :smiley:

ViniGodoy

Não pode. Dê uma olhada no nosso manual de postagem:

Se pedir urgência funcionasse, quem é que não pediria?

A

ViniGodoy:

Se pedir urgência funcionasse, quem é que não pediria?

Ok, entendi.

Todavia, eu, pelo menos, sempre ajudo, qdo. vejo posts assim.

matheuslmota

A primeira coisa que você deve fazer é definir a estrutura do seu XML. Já criou um arquivo XSD para o seu XML? O XSD será usado para fins de validação. Depois, você deve escrever um conversor, que consiga pegar pegar o conteúdo do TXT e transformar para objetos. Os objetos você pode converter para XML. Para isso use a JAXB.

E

Tem uma coisa que ajuda. A endentação das linhas de log desse arquivo texto é essa mesma? Se for, facilita você achar o início e o fim das tags do XML. Nem precisaria você ter uma estrutura interna de dados para ir criando o XML.

Revista Mãe => Início da Execução 
...
Revista Mãe => Executado com FALHA  
                      Duração Total: 1m 28s 963ms

Isso me parece algo como:

r<revista>
<resultado status="falha" duração="01:28.963" /></revista>

e assim por diante.

M

oiiiii… obrigaddddinhaa

mais essa parte eu consigo fazer, minha dificuldade e ler o arquivo txt que segue friamente esse que eu mandei e igualziinhoo…

M

entanglement:
Tem uma coisa que ajuda. A endentação das linhas de log desse arquivo texto é essa mesma? Se for, facilita você achar o início e o fim das tags do XML. Nem precisaria você ter uma estrutura interna de dados para ir criando o XML.

Revista Mãe => Início da Execução 
...
Revista Mãe => Executado com FALHA  
                      Duração Total: 1m 28s 963ms

Isso me parece algo como:

r<revista>
<resultado status="falha" duração="01:28.963" /></revista>

e assim por diante.

esse arquivo nao é xml e txt… mesmo assim voce pode continuar me ajudandop or favor?

M

andredecotia:
ViniGodoy:

Se pedir urgência funcionasse, quem é que não pediria?

Ok, entendi.

Todavia, eu, pelo menos, sempre ajudo, qdo. vejo posts assim.

abrigaaaada dré pel a ajuda

M

Não pode. Dê uma olhada no nosso manual de postagem:

Se pedir urgência funcionasse, quem é que não pediria?

oiii voce poderia me ajudar tambem? prometo que nao vou usar mais essas palavrinhass

M
andredecotia:
Á princípio, acredito q um loop iria resolver... Por favor, detalhe o q vc já fez, assim tento te ajudar. :D
tentei mais a logica fica muito complexo e me confundu.. eu ate fiz algo assim
Mae mae = new Mae();
mae.setValor1();
mae.setValor...


Filha filha = null;
for (filha...){
     for(neta...) {
         for(bisneta)

}

}

pode m ajudar adrnre?

A
mariazinhahappy:
andredecotia:
Á princípio, acredito q um loop iria resolver... Por favor, detalhe o q vc já fez, assim tento te ajudar. :D
tentei mais a logica fica muito complexo e me confundu.. eu ate fiz algo assim
Mae mae = new Mae();
mae.setValor1();
mae.setValor...


Filha filha = null;
for (filha...){
     for(neta...) {
         for(bisneta)

}

}

pode m ajudar adrnre?

Vc está seguindo essa linha de loop mesmo? Talvez então c pudesse utilizar while(valor.contains("textoEmQuestao")) pois pelo q entendi c ñ tem a informação d quantos nós virão na hierarquia q tu citas, captei q ñ é um .XML e sim um .TXT...

No q exatamente vc está se perdendo, na lógica mesmo?

A

Eu tb ópto pelo JAXB ao invés do XStream.

Só não esquece de utilizar a anotação

@XmlRootElement na classe raíz, para não receber um exception.

M
andredecotia:
mariazinhahappy:
andredecotia:
Á princípio, acredito q um loop iria resolver... Por favor, detalhe o q vc já fez, assim tento te ajudar. :D
tentei mais a logica fica muito complexo e me confundu.. eu ate fiz algo assim
Mae mae = new Mae();
mae.setValor1();
mae.setValor...


Filha filha = null;
for (filha...){
     for(neta...) {
         for(bisneta)

}

}

pode m ajudar adrnre?

Vc está seguindo essa linha de loop mesmo? Talvez então c pudesse utilizar while(valor.contains("textoEmQuestao")) pois pelo q entendi c ñ tem a informação d quantos nós virão na hierarquia q tu citas, captei q ñ é um .XML e sim um .TXT...

No q exatamente vc está se perdendo, na lógica mesmo?

tentei mais naoo consegui terminar sempre me confundoo por ser muito complexoo

M

podem me ajudar mais??? ?

sergiotaborda

O conceito que vc precisa entender é que existe uma arvore ali. Se existe uma arvore, existem nodos. Vc precisa criar uma classe que represente o nodo de forma que cada nodo possa ter filhos e um pai.
Ai vc lê o arquivo linha a linha e vai criando os nodos. Vc pode usar a edentação da linha para entender qual nodo é filho de qual.

Depois que vc tiver a arvore com todos os nodos vc precisa escrevê-la para xml. Para isso vc precisa de um objeto que vai passando de nodo em nodo e escrevendo o nodo para o xml. O laço for não vai resolver.
Este padrão chama-se visitor é muito util com estrutruas de arvores como estrutruas de pastas e arquivos por exemplo.

Sim, é complexo. Espera-se que vc tenha noção do conceito de arvore e nodo. Se vc conseguir implementar a leitura e ter a arvore , o resto é mais simples.
Para o uso do padrão visitor é bom conversar com alguém mais experiente.

Não tenha vergonha de pedir ajuda. Você não tem nada a perder e muito a ganhar. Mas faça seu trabalho de casa primeiro. Ficar batendo conta as paredes não adianta.

Fora isso, deu uma revisada em estruturas de dados porque vc está precisando e lhe será util para o resto da vida.

Criado 21 de janeiro de 2013
Ultima resposta 22 de jan. de 2013
Respostas 20
Participantes 6