Apache Axis 1:禁用科学计数法中的xsd:float序列化

时间:2017-06-14 09:35:29

标签: web-services soap xsd axis

我们有一个Web服务客户端调用服务(rpc编码,我们仍在使用Axis 1的原因),它将某些值定义为xsd:float但拒绝以科学计数法传递的值。我理解它是完全符合标准的客户端行为(https://www.w3.org/TR/xmlschema-2/ 3.2.4.1)并且可能是服务器使用xsd:decimal的正确方法我想知道是否有办法告诉轴不要对xsd:floatxsd:double

使用科学记数法

可能相关:BigDecimal has scientific notation in soap message询问如何使用JAX-B实现这一点,并接受建议使用XMLAdapter的答案。也许轴存在类似的机制。

1 个答案:

答案 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/"/>