我正在使用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注释中,但它没有改变输出。
非常感谢任何提示或指导!
答案 0 :(得分:0)
好的,这是一个非常可怕的答案,但我通过确保WSDL文件和Java对象类中的数据类型不同来实现它。所以在这种情况下,我将Java注释更改为:
@XmlElement(name = "SOME_TAG", type = java.lang.StringBuffer.class)
当它被编组时,最终会添加xsi:type =“xsd:string”属性。
就像我说的,不是一个很好的答案 - 但它确实有效。