Маршаллинг 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 может быть изменен, я бы хотел оставить исходный код без изменений.

Ответы на вопрос(4)

Ваш ответ на вопрос