如何用ofx4j解析格式错误的xml(ofx)?
我正在拼命地尝试使用以下库: ofx4j 。 但是有关解析ofx文件的文档有点精简。 它说:如果你有一个文件或其他流资源,你可以使用net.sf.ofx4j.io.OFXReader的实例来读取它。
好的,但我该怎么办?
它还说明如下:如果要将OFX直接解组为Java对象,请使用net.sf.ofx4j.io.AggregateUnmarshaller。
很好,但这对我来说有点复杂。 我错过了一些明显的东西吗? 当我尝试使用unmarshaller时,它要求我实现一个接口。
有人能指点我在线资源解释我错过的部分吗? 或者最好的,你从之前关于ofxreader和unmarshaller的陈述中理解了什么?
请不要打击我,我正在使用playframework学习java,我真的很感激能够解析那些ofx文件。
提前致谢。
我没有看到一个简单的旧教程,但是测试目录中的示例代码说明了OFXReader
和AggregateUnmarshaller
。
短语“ 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(); } }