我注意到pyxbdecimal
数据类型在呈现为XML时不保留尾随的零。罪魁祸首是对normalize()
函数下一行XsdLiteral
中binding/datatypes.py
的第159行中的normalize()
的调用:
(sign, digits, exponent) = value.normalize().as_tuple()
(其中value
是Python的decimal
的实例)。这对我来说有点问题,因为我尝试与之交互的web服务需要X.000
形式的版本号,pyxb正在将其截断为X.0
。你知道吗
这是预期的行为吗?或者某些标准要求的?其他XML模式生成库也这样做吗?我现在的解决方案是改用string
,但是如果代码不破坏任何东西,那么代码很容易更改。你知道吗
我没有使用pyxb的经验,但我的猜测是,一般来说,人们希望XML尽可能紧凑以保留内存,因此小数会截断以保留字节。你知道吗
这似乎不是一个正常的情况下使用小数点。我认为应该使用十进制来存储数学数值,因此截断总是可能的。因为你的案例很特殊,所以这个模块可能不是为你想做的事情而设计的。你知道吗
官方的PyXB响应是here,但是来自the description of the canonical representation of an xs:decimal value:
同样在十进制本身的描述中:
服务提供商要求提供尾随零,因此不符合要求。你知道吗
相关问题 更多 >
编程相关推荐