如何用ofx4j解析格式错误的xml(ofx)?

我正在拼命地尝试使用以下库: ofx4j 。 但是有关解析ofx文件的文档有点精简。 它说:如果你有一个文件或其他流资源,你可以使用net.sf.ofx4j.io.OFXReader的实例来读取它。

好的,但我该怎么办?

它还说明如下:如果要将OFX直接解组为Java对象,请使用net.sf.ofx4j.io.AggregateUnmarshaller。

很好,但这对我来说有点复杂。 我错过了一些明显的东西吗? 当我尝试使用unmarshaller时,它要求我实现一个接口。

有人能指点我在线资源解释我错过的部分吗? 或者最好的,你从之前关于ofxreader和unmarshaller的陈述中理解了什么?

请不要打击我,我正在使用playframework学习java,我真的很感激能够解析那些ofx文件。

提前致谢。

我没有看到一个简单的旧教程,但是测试目录中的示例代码说明了OFXReaderAggregateUnmarshaller

短语“ net.sf.ofx4j.io.OFXReader一个实例”意味着已知的实现类之一“,例如NanoXMLOFXReader ,它在此处进行了测试 NanoXMLOFXReader的测试就在这里 。

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 unmarshaller = new AggregateUnmarshaller( 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 responses = messageSet.getStatementResponses(); for (CreditCardStatementResponseTransaction response : responses) { CreditCardStatementResponse message = response.getMessage(); String currencyCode = message.getCurrencyCode(); List transactions = message.getTransactionList().getTransactions(); for (Transaction transaction : transactions) { System.out.println(transaction.getName() + " " + transaction.getAmount() + " " + currencyCode); } } } catch (OFXParseException e) { e.printStackTrace(); } }