SOAP Spring WS - Jaxb2Marshaller在解组时不包含xsi:type

时间:2016-07-31 16:17:25

标签: java spring web-services soap

我正在使用SOAP Web服务,它似乎对它收到的XML主体的格式相当无情。例如,如果我不包含xsi:type属性,请执行以下操作:

<SOME_TAG>New York</SOME_TAG>

我收到错误消息说&#34;没有发现反序列化程序反序列化&#39; SOME_TAG&#39;使用编码样式&#39; http://schemas.xmlsoap.org/encoding/&#39;&#34;

但是,如果我将标签更改为此,一切都很好:

<SOME_TAG xsi:type="xsd:string">New York</SOME_TAG>

不幸的是,我无法弄清楚如何让Jaxb2Marshaller包含xsi:type属性。我尝试过添加&#39; type = String.class&#39;在@XmlElement注释中,但它没有改变输出。

非常感谢任何提示或指导!

1 个答案:

答案 0 :(得分:0)

好的,这是一个非常可怕的答案,但我通过确保WSDL文件和Java对象类中的数据类型不同来实现它。所以在这种情况下,我将Java注释更改为:

@XmlElement(name = "SOME_TAG", type = java.lang.StringBuffer.class)

当它被编组时,最终会添加xsi:type =“xsd:string”属性。

就像我说的,不是一个很好的答案 - 但它确实有效。