2

私は必死に次のライブラリを使おうとしています:ofx4j。しかし、ofxファイルの解析に関連するドキュメントは少しわかりやすいです。それは言う:あなたがファイルまたは他のストリームリソースを持っているなら、あなたはnet.sf.ofx4j.io.OFXReaderのインスタンスを使ってそれを読むことができます

わかりましたが、どうすればよいですか?

また、次のように述べています。OFXをJavaオブジェクトに直接アンマーシャリングする場合は、net.sf.ofx4j.io.AggregateUnmarshallerを使用します。

結構ですが、それは私にとって少し複雑です。私が見逃した明らかな何かがありますか?unmarshallerを使おうとすると、インターフェースを実装するように求められます。

誰かが私が欠けているビットを説明するオンラインリソースを私に指摘できますか?または、最高の、ofxreaderとunmarshallerに関連する前のステートメントから何を理解しますか?

どうか、私をバカにしないでください。私はプレイフレームワークでJavaを学んでおり、それらのofxファイルを解析できることを本当に感謝しています。

前もって感謝します。

4

2 に答える 2

5

昔ながらのチュートリアルは表示されませんが、テストディレクトリにとを示すサンプルコードがOFXReaderありAggregateUnmarshallerます。

「のインスタンス」という句は、ここでテストさnet.sf.ofx4j.io.OFXReaderれる、などの既知の実装クラスの1つを意味します。のテストはここにあります。NanoXMLOFXReaderAggregateUnmarshaller

APIメールアーカイブも優れたリソースです。多くの機関が参加しているようです。

于 2010-02-08T17:13:43.087 に答える
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();
  }
}
于 2010-11-08T22:18:25.567 に答える