JAXB使用fractionDigits对BigDecimal进行编组

所以这是我的问题。 我给了一个我生成的XML文件应符合的XSD。 使用org.apache.cxf.cxf-xjc-plugin maven插件和外部绑定文件生成源代码。 但是当我在尝试编组我的对象时,生成的XML不符合我的要求。

我的XSD包含以下内容:

         ...         

生成的XML片段如下所示:

 109.5 ... 10.25 

虽然我期待它是:

 109.50 ... 10.25000 

有没有办法以干净的方式解决这个问题?

我不想为每个totalDigitsfractionDigits组合编写几个适配器。 由于XSD可能会发生变化,因此我希望保持生成的源代码不变。

您需要在此用例中使用XmlAdapter 。 下面是一个示例绑定文件,可帮助您生成它们。 逻辑将包含在DecimalFormatter类中,该类包含所有不同所需格式的方法。

                   

了解更多信息

如果您可以更改XSD以使用此处记录的precisionDecimal类型,则可以使用设置为相同值的minScalemaxScale构面。

我对通过保持尾随零可能获得的东西感到困惑。

如果尾随零保持重要,则使用字符串值而不是数字,并使用属性指定其宽度和小数。

在任何情况下,尾随零都不会影响使用任何这些值的计算,并且您能够呈现它们的唯一方法是将结果转换为字符串并自行填充。 对于一些帮助,你可能想看到……

CXF客户端SOAP消息格式化

Interesting Posts