我们有一个Web服务客户端,它调用一个服务(rpc编码,我们仍然使用轴1的原因(,该服务将一些值定义为xsd:float
但拒绝以科学记数法传递的值。我知道这是客户端完全符合标准的行为(https://www.w3.org/TR/xmlschema-2/3.2.4.1(,并且可能是服务器使用的正确方式xsd:decimal
我想知道是否有办法告诉轴不要使用科学记数法进行xsd:float
和xsd:double
可能相关:BigDecimal 在肥皂消息中具有科学记数法,询问如何使用 JAX-B 实现这一点,并接受的答案建议使用XMLAdapter
。也许轴存在类似的机制。
看起来在 Axis (http://axis.apache.org/axis/java/user-guide.html#XML_-_Java_Data_Mapping_in_Axis( 中,您可以为(例如(float 定义自己的序列化程序和反序列化程序(您必须更改 XSD:;您是否有权访问?(。 这是通过 typeMapping 完成的:
<typeMapping qname="ns:local" xmlns:ns="someNamespace"
languageSpecificType="java:my.java.thingy"
serializer="my.java.Serializer"
deserializer="my.java.DeserializerFactory"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>