API para fazer parsing de linha de texto

7 respostas
Rafael_Afonso

Olá:

Creio que esse é um problema muito comum para nós: Temos um arquivo texto para ler e a cada linha temos que fazer um tipo de parser. Por exemplo:

|---------------|-------------|-------|------|-------------------------------|------------|
|Posição inicial|Posição Final|Tamanho|Tipo  |Descrição                      |Obrigatório?|
|---------------|-------------|-------|------|-------------------------------|------------|
|1              |3            |3      |int   |Código-transação               |Sim         |
|---------------|-------------|-------|------|-------------------------------|------------|
|4              |4            |1      |int   |Tipo-condicionalidade-transação|Não         |
|---------------|-------------|-------|------|-------------------------------|------------|
|5              |7            |3      |String|Código-retorno-execução        |Sim         |
|---------------|-------------|-------|------|-------------------------------|------------|
|8              |13           |6      |double|valor                          |Não         |
|---------------|-------------|-------|------|-------------------------------|------------|
|14             |23           |10     |Long  |Número-auto-infração           |Sim         |
|---------------|-------------|-------|------|-------------------------------|------------|
|24             |27           |4      |short |Código-infração                |Não         |
|---------------|-------------|-------|------|-------------------------------|------------|

O que queria saber é se existe alguma API disponível para realizar essa tarefa por mim. Onde passo uma String representando a linha, é feito o parsing e então me retorna um array de objetos de acordo com a configuração exemplificada acima.

Grato,

7 Respostas

Rafael_Afonso

Com ajuda de meus contactos descobri duas APIs: A Spring Batch e a JFileHelpers. O problema é que são para Java 5 ou superior e eu ainda estou usando Java 1.4. :frowning: Portanto anda estou procurando por uma solução que seja compatível com java 1.4.

proteus_adi

Eita q num tendi nada…

Baum… suponho que se eu não pulei alguma vírgula…
Se tiver algo que faz isso deve ser bem legal…
=],

Mas, embora confuso… acho que não é dificil de implementar não…
é só botar um monte de if e substr igual exercício de tratamento de string em trabalhim de curso técnico…
e botar tudo em um vetorzinho não tipado… transformando em arranjo no final…
:oops: Foda que um arranjo teria que ser duma classe genérica anscestral com um getValue polimórfico.

Se tiver algo pronto…
manda q eu quero ver funfando…
:smiley:

Rafael_Afonso

Tava pensando… será que XSLT não serviria? Tenho que pesquisar melhor…

Aldrin_Leal

Retroweaver não ajudaria?

Fiz um há uns 4 anos. Ficou até legal, e montei uma interface JWS pra montar a definição a partir de uma amostra.

Rafael_Afonso

Você quer dizer pegar essas API e convertê-las para java 1.4?

Aldrin Leal:

Fiz um há uns 4 anos. Ficou até legal, e montei uma interface JWS pra montar a definição a partir de uma amostra.

Hum… . Me explica melhor isso o que você fez.

thiagopri

Ola Rafael,

Trabalho bastante com troca de mensagens com Mainframe e no meu caso, utilizo uma API chamada MFL (Message Format Language), proprietária da BEA/Oracle e só é disponibilizada quando vc esta trabalhando num ambiente BEA/Oracle, se estiver trabalhando com esses produtos, utilize-a sem medo, aqui resolve meu problema.

Caso contrário a API q vc mesmo citou parece resolver o problema: JFileHelpers, fiz um teste e funcionou bem legal, porém nao consigo te assegurar a performance, uma vez q nao estressei o teste.

Abs.

B

tem o JFileHelpers (mais prático) e o Smooks (mais recursos)

Criado 24 de novembro de 2008
Ultima resposta 26 de nov. de 2008
Respostas 7
Participantes 5