2010-02-08 11 views
2

Je suis désespérément essayer d'utiliser la bibliothèque suivante: ofx4j. Mais la documentation relative à l'analyse d'un fichier ofx est un peu légère. Il dit: Si vous avez un fichier ou une autre ressource de flux, vous pouvez le lire en utilisant une instance de net.sf.ofx4j.io.OFXReaderComment analyser un xml malformé (ofx) avec ofx4j?

Ok mais comment faire?

Il indique également ce qui suit: si vous voulez démasquer l'OFX directement à un objet Java, utilisez net.sf.ofx4j.io.AggregateUnmarshaller.

Très bien, mais c'est un peu compliqué pour moi. Y at-il quelque chose d'évident que j'ai raté? Lorsque j'essaie d'utiliser le unmarshaller, il me demande d'implémenter une interface.

Quelqu'un pourrait-il me pointer vers une ressource en ligne expliquant les bits que je suis absent? Ou le meilleur, que comprenez-vous des déclarations précédentes relatives à l'ofxreader et au unmarshaller?

S'il vous plaît, ne me bash pas, je suis d'apprentissage java avec le et je voudrais play framework vraiment apprécié de pouvoir analyser ces fichiers OFX.

merci d'avance.

Répondre

5

Je ne vois pas de vieux tutoriel, mais il y a un exemple de code dans le répertoire test qui illustre OFXReader et AggregateUnmarshaller.

L'expression "une instance de net.sf.ofx4j.io.OFXReader" désigne l'une des classes d'exécution connues », comme NanoXMLOFXReader, qui est tested here. Un test pour AggregateUnmarshaller est here.

Les archives API et mail sont de bonnes ressources, aussi . On dirait que beaucoup de institutions participer.

+0

Merci beaucoup vous tout à fait ma journée ... Je suis tellement honte que j'ai raté les tests unitaires. Merci beaucoup pour votre direction. – mrburns

2

Pour ceux qui trébuchent sur ce que je faisais quand je ne pouvais pas obtenir les résultats attendus de la AggregateUnmarshaller ... Voici un exemple.

//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(); 
    } 
}