2010-02-08 3 views
2

Я отчаянно пытаюсь использовать следующую библиотеку: ofx4j. Но документация относительно разбора файла inx немного облегчена. В нем говорится: если у вас есть файл или другой ресурс потока, вы можете прочитать его, используя экземпляр net.sf.ofx4j.io.OFXReaderКак разобрать искаженный xml (ofx) с ofx4j?

Хорошо, но как мне это сделать?

В нем также указано следующее: если вы хотите развязать OFX непосредственно к объекту Java, используйте net.sf.ofx4j.io.AggregateUnmarshaller.

Отлично, но это немного сложно для меня. Есть ли что-то очевидное, что я пропустил? Когда я пытаюсь использовать unmarshaller, он просит меня реализовать интерфейс.

Может ли кто-нибудь указать мне на онлайн-ресурс, объясняющий биты, которые мне не хватает? Или лучшее, что вы понимаете из предыдущих утверждений относительно xreader и unmarshaller?

Пожалуйста, не бас меня, я изучаю java с playframework, и я был бы очень признателен, чтобы разобрать эти файлы.

благодарит заранее.

ответ

5

Я не вижу простой старый учебник, но есть пример кода в каталоге test, который иллюстрирует OFXReader и AggregateUnmarshaller.

Фраза «экземпляр net.sf.ofx4j.io.OFXReader» означает один из известных классов, реализующих», такие как NanoXMLOFXReader, который tested here. Тест на AggregateUnmarshaller является here.

В API и mail архивов хорошие ресурсы, слишком . похоже, что много institutions участвуют.

+0

Большое вам спасибо, что вы полностью сделали свой день ... Мне так стыдно, что я пропустил модульные тесты. Большое спасибо за ваши указания. – mrburns

2

Для тех, кто наткнуться на это, как я сделал, когда я не мог получить ожидаемые результаты от AggregateUnmarshaller ... Вот пример.

//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(); 
    } 
} 
Смежные вопросы