diff --git a/src/zeep/xsd/types/builtins.py b/src/zeep/xsd/types/builtins.py index 206dee3d5..e3e05c657 100644 --- a/src/zeep/xsd/types/builtins.py +++ b/src/zeep/xsd/types/builtins.py @@ -88,6 +88,8 @@ class Decimal(BuiltinType): @check_no_collection def xmlvalue(self, value): + if isinstance(value, _Decimal): + return "{:f}".format(value) return str(value) @treat_whitespace("collapse") diff --git a/tests/test_xsd_builtins.py b/tests/test_xsd_builtins.py index 4c34b2ac8..a34ef8b1d 100644 --- a/tests/test_xsd_builtins.py +++ b/tests/test_xsd_builtins.py @@ -83,6 +83,9 @@ def test_xmlvalue(self): assert instance.xmlvalue(D("10.000002")) == "10.000002" assert instance.xmlvalue(D("10")) == "10" assert instance.xmlvalue(D("-10")) == "-10" + assert instance.xmlvalue(D("1.1E-3")) == "0.0011" + assert instance.xmlvalue(D("1.1E+3")) == "1100" + assert instance.xmlvalue(D("1.100000000000002E-3")) == "0.001100000000000002" def test_pythonvalue(self): instance = builtins.Decimal()