2 votes

Axe Apache 1 : Désactiver la sérialisation de xsd:float en notation scientifique

Nous avons un client webservice qui appelle un service (rpc-encodé, raison pour laquelle nous utilisons toujours l'axe 1) qui définit certaines valeurs comme suit xsd:float mais refuse les valeurs transmises en notation scientifique. Je comprends qu'il s'agit d'un comportement tout à fait conforme aux normes du client ( https://www.w3.org/TR/xmlschema-2/ 3.2.4.1) et ce serait probablement la bonne façon pour le serveur d'utiliser la fonction xsd:decimal Je me demande s'il existe un moyen d'indiquer à axis de ne pas utiliser la notation scientifique pour les xsd:float y xsd:double

Possiblement lié : BigDecimal a la notation scientifique dans le message du savon demande comment réaliser cela avec JAX-B, la réponse acceptée suggérant d'utiliser un XMLAdapter . Il existe peut-être un mécanisme similaire pour l'axe.

2voto

mikep Points 3212

Il semble que dans Axis ( http://axis.apache.org/axis/java/user-guide.html#XML_-_Java_Data_Mapping_in_Axis ), vous pouvez définir votre propre sérialiseur et désérialiseur pour (par exemple) float (vous devrez changer le xsd : ; y avez-vous accès ?). Cela se fait par l'intermédiaire d'un 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/"/>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X