Как разобрать искаженный xml (ofx) с помощью ofx4j?

StackOverflow https://stackoverflow.com/questions/2221608

  •  19-09-2019
  •  | 
  •  

Вопрос

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

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

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

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

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

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

заранее благодарю.

Это было полезно?

Решение

Я не вижу простого старого руководства, но в тест каталог , иллюстрирующий OFXReader и AggregateUnmarshaller.

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

В API и Почта архивы тоже являются хорошими ресурсами.Это выглядит как множество учреждения участвуйте.

Другие советы

Для тех, кто натыкается на это, как я сделал, когда не смог получить ожидаемые результаты от 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();
  }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top