Маршаллинг JAXB для BigDecimal с использованием дробной части
Итак, вот моя проблема. Мне дали XSD, которому должен соответствовать мой сгенерированный XML-файл. С помощьюorg.apache.cxf.cxf-xjc-plugin
Плагин maven и внешний файл привязки я генерирую исходный код. Но когда я пытаюсь маршаллировать свой объект, сгенерированный XML не соответствует моим требованиям.
Мой XSD содержит следующее:
<xsd:element maxOccurs="1" minOccurs="0" name="amount">
<xsd:simpleType>
<xsd:restriction base="xsd:decimal">
<xsd:totalDigits value="13" />
<xsd:fractionDigits value="2" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
...
<xsd:element maxOccurs="1" minOccurs="0" name="rate">
<xsd:simpleType>
<xsd:restriction base="xsd:decimal">
<xsd:totalDigits value="8" />
<xsd:fractionDigits value="5" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
И сгенерированный кусок XML выглядит так:
<amount>109.5</amount>
...
<rate>10.25</rate>
Пока я ожидал, что это будет:
<amount>109.50</amount>
...
<rate>10.25000</rate>
Есть ли способ решить эту проблему в чистом виде?
Я бы предпочел не писать несколько адаптеров для каждогоtotalDigits
, fractionDigits
сочетание. И поскольку XSD может быть изменен, я бы хотел оставить исходный код без изменений.