Pergunta

Estou desesperadamente tentando usar o seguinte biblioteca: ofx4j . Mas a documentação relativa à análise de um arquivo OFX é um pouco Lite. Ele diz: Se você tem um arquivo ou outro recurso de stream, você pode lê-lo usando uma instância do net.sf.ofx4j.io.OFXReader

Ok, mas como é que eu faço?

Ele também afirma o seguinte:. Se você quiser desempacotar o OFX diretamente para um objeto Java, utilize o net.sf.ofx4j.io.AggregateUnmarshaller

Tudo bem, mas isso é um pouco complicado para mim. Há algo óbvio que eu perdi? Quando eu tento usar o unmarshaller, ele me pede para implementar uma interface.

Será que alguém me aponte para um recurso online explicando os bits que eu estou ausente? Ou melhor, o que você entende das declarações anteriores relativas ao ofxreader eo unmarshaller?

Por favor, não bater-me, estou aprendendo java com o playframework e eu realmente aprecio a ser capaz de analisar esses arquivos ofx.

Agradecemos antecipadamente.

Foi útil?

Solução

Eu não ver um tutorial simples velho, mas não há código de exemplo na diretório de teste que ilustra OFXReader e AggregateUnmarshaller.

A frase "uma instância de net.sf.ofx4j.io.OFXReader " significa uma das classes de aplicação conhecidos", como NanoXMLOFXReader , que é testado aqui . um teste para AggregateUnmarshaller é aqui .

O API e arquivos de correio são bons recursos também. Parece que um monte de instituições participar.

Outras dicas

Para aqueles que tropeçam neste como eu fiz quando eu não conseguia obter os resultados esperados da AggregateUnmarshaller ... Aqui está um exemplo.

//Using a multipart file, but using a regular file is similar.
public void parse(MultipartFile file) throws IOException {
  //Use ResponseEnvelope to start.
  AggregateUnmarshaller<ResponseEnvelope> unmarshaller = new AggregateUnmarshaller<ResponseEnvelope>(
    ResponseEnvelope.class);

  try {
    ResponseEnvelope envelope = unmarshaller.unmarshal(file.getInputStream());
    //Assume we are just interested in the credit card info.  Make sure to cast.
    CreditCardResponseMessageSet messageSet = (CreditCardResponseMessageSet) envelope
      .getMessageSet(MessageSetType.creditcard);

    List<CreditCardStatementResponseTransaction> responses = messageSet.getStatementResponses();
    for (CreditCardStatementResponseTransaction response : responses) {
      CreditCardStatementResponse message = response.getMessage();
      String currencyCode = message.getCurrencyCode();
      List<Transaction> transactions = message.getTransactionList().getTransactions();
      for (Transaction transaction : transactions) {
        System.out.println(transaction.getName() + " " + transaction.getAmount() + " "
          + currencyCode);
      }
    }
  }
  catch (OFXParseException e) {
    e.printStackTrace();
  }
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top