Формат вывода JaxB?
В настоящее время я работаю над кодом Java, который использует JaxB для обработки чтения / записи информации XML. Он заполняет класс Java, который используется в программе. В определенные моменты класс распределяется и записывается обратно в xml. У меня нет проблем с этим, и все работает, как ожидалось.
Что меня интересует, так это возможность изменить формат записи JaxB чисел с плавающей запятой. Например, часть используемой схемы xml содержит следующую выдержку:
.
.
<xs:element name="myObfuscatedValue">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:double">
<xs:attrbute name="myObfuscatedValue__comment" type="comment" use="optional" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
.
.
Поэтому, когда я отменю маршалинг, "myObfuscatedValue" в основном становится Double. Затем у меня есть класс-оболочка вокруг сгенерированных классов JaxB, который позволяет пользователю получать доступ / изменять переменные через стандартные методы установки / получения. Маршаллинг работает отлично.
Я также хочу сделать так, чтобы JaxB записал удвоение в определенном числовом формате (что-то похожее на десятичный формат, такой как "0,0000E00" . Это возможно сделать легко? Я был вынужден обратиться к нескольким различным ресурсам о том, как это сделать). это, но я признаю, что мои знания xml/schemas/JaxB не актуальны. Есть ли способ изменить вызов xjc, чтобы сделать это? Если возможно, я хочу избежать изменения файла схемы, если это возможно (он используется несколько кодов на разных языках, и я должен был бы понять, если изменение его сначала нарушит какой-либо из этих кодов).
Любая помощь, понимание или предложения по этому вопросу будет принята с благодарностью.
1 ответ
Вы можете использовать XmlAdapter
настроить представление значения в XML. Ниже приведен пример, демонстрирующий, как использовать XmlAdapter
если вы генерируете объектную модель из XmlSchema:
- Использование сгенерированного класса JAXB для элемента, которому требуется целое число с шаблоном
- http://blog.bdoughan.com/2011/08/xml-schema-to-java-generating.html
Вот еще один пример использования XmlAdapter
когда вы начинаете с классов Java: