无法使用Java和JAXB解组奇怪的XML格式

时间:2015-05-13 19:43:14

标签: java xml jaxb sgml

我需要使用Open Financial Exchange(OFX)协议检索财务数据。为了做到这一点,我使用JAXB将对象树编组为指定数据请求参数的XML字符串,然后我将此XML字符串发送到银行的服务器。然后银行用包含所请求数据的XML字符串进行响应,我使用JAXB将其解组到对象树中。对于我尝试的前几个银行,我收到了符合已发布的OFX架构的格式良好的XML数据,并且我能够使用JAXB轻松解组它。

但是,当我向花旗集团请求数据时,他们又向我发送了以下内容:

Unit

请注意,这是实际输出的缩写形式,但足以说明问题。问题是我无法弄清楚如何使用JAXB来解组这些内容。它不是格式良好的XML,因为(1)它没有XML头,(2)自定义处理指令(上面的前九行)没有包含在<?...?>中。标签,(3)最重要的是,simpleTypes只有开始标签但没有结束标签。

我已经到处搜索了这个问题的答案,并在几个地方找到了类似的XML-ish格式,其中一个地方表明这甚至可能是通过网络发送XML的有效格式。但我还没有找到任何可以帮助我解组它或解析它的信息。

有没有人有任何建议?当涉及到这些类型的问题时,我通常非常有资源(因此这就是为什么这是我在这里的第一个问题),但是这个让我很难过。提前感谢您提供的任何帮助。

2 个答案:

答案 0 :(得分:1)

您的基本问题是您在此处显示的输入不是XML,而是SGML(请参阅DATA:OFXSGML)。您必须对其进行预处理才能使XML解析器可以接受。您需要做的预处理类型将是特定于应用程序的,因为没有通用的机制可以很好地处理它。如果你有SGML DTD,你可以获得omnimark之类的产品来“主要”修复它。

答案 1 :(得分:0)

好吧,也许您需要以其他方式处理此银行服务,例如,当您从该银行收到数据时,可能会读取流,并可能尝试解决标签的开始然后结束(逐行读取) link)流的其余部分..免费。之后,剩下的字符串是您需要的XML,因此将其传递给已经实现的JAXB代码。