我们有一个Web服务客户端调用服务(rpc编码,我们仍在使用Axis 1的原因),它将某些值定义为xsd:float
但拒绝以科学计数法传递的值。我理解它是完全符合标准的客户端行为(https://www.w3.org/TR/xmlschema-2/ 3.2.4.1)并且可能是服务器使用xsd:decimal
的正确方法我想知道是否有办法告诉轴不要对xsd:float
和xsd:double
可能相关:BigDecimal has scientific notation in soap message询问如何使用JAX-B实现这一点,并接受建议使用XMLAdapter
的答案。也许轴存在类似的机制。
答案 0 :(得分:2)
看起来在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/"/>