我知道之前有一个几乎相同的问题被提出过(在这里)。尽管有一个有趣的答案,但在反序列化的情况下仍存在一个未解决的问题,似乎也适用于我们的情况。
这是我们的情况:我们正在解析SOAP消息,其主体结构如下:
直到现在,我们一直假定从取消编组过程中得到的(Array)List中会保留的顺序。然后将元素写入表格并在PL/SQL过程中进一步处理。这通常不会对序列内部元素的顺序敏感。
但是可能会出现SOAP消息中有两个引用相同对象的元素的情况。这是一个错误。它被PL/SQL代码捕获,并通过记录该情况和拒绝第二个元素来处理。
我们现在的问题是非常罕见且(直到现在)完全不可重现,不是第二个元素(如SOAP消息中所示)被拒绝,而是第一个。从PL/SQL代码的角度来看,只有当表示元素的数据按照错误的顺序读取时(与它们在消息中出现的顺序相比较),才会发生这种情况。
因此,我想知道这种情况是否可能是由于未明确定义编组的元素顺序引起的。 在上述问题的答案中,似乎在使用JAXB进行编组时定义了顺序。尚未回答的问题(由chahuistle提出)是在取消编组时是否也是如此。
我将不胜感激地接受任何帮助!
这是我们的情况:我们正在解析SOAP消息,其主体结构如下:
<complexType name="Body">
<complexContent>
<restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
<sequence>
<element ref="{http://[message=spec url]"/>
</sequence>
</restriction>
</complexContent>
</complexType>
直到现在,我们一直假定从取消编组过程中得到的(Array)List中会保留的顺序。然后将元素写入表格并在PL/SQL过程中进一步处理。这通常不会对序列内部元素的顺序敏感。
但是可能会出现SOAP消息中有两个引用相同对象的元素的情况。这是一个错误。它被PL/SQL代码捕获,并通过记录该情况和拒绝第二个元素来处理。
我们现在的问题是非常罕见且(直到现在)完全不可重现,不是第二个元素(如SOAP消息中所示)被拒绝,而是第一个。从PL/SQL代码的角度来看,只有当表示元素的数据按照错误的顺序读取时(与它们在消息中出现的顺序相比较),才会发生这种情况。
因此,我想知道这种情况是否可能是由于未明确定义编组的元素顺序引起的。 在上述问题的答案中,似乎在使用JAXB进行编组时定义了顺序。尚未回答的问题(由chahuistle提出)是在取消编组时是否也是如此。
我将不胜感激地接受任何帮助!