我目前正在编写一个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生成的类周围有一个包装器类,它允许用户通过标准设置器/getter器访问/修改变量。编组返回也可以。
我还想做的是让JaxB以特定的数字格式(类似于"0.0000E00"之类的DecimalFormat)写出双精度。这可能很容易做到吗?关于如何做到这一点,我查阅了许多不同的参考资料,但是我承认我的xml/schemas/JaxB知识不是最新的。是否有一种方法可以改变xjc调用来做到这一点?如果可能的话,我希望尽可能避免更改模式文件(它由不同语言的多个代码使用,我必须了解更改它是否会首先破坏任何这些代码)。
对于此事,如有任何帮助、见解或建议,我将不胜感激。
您可以使用XmlAdapter
自定义值在XML中的表示方式。下面的示例演示了如何使用XmlAdapter
,如果您正在从XmlSchema生成对象模型:
- 使用JAXB为元素生成的类,该元素需要具有模式 的整数
- http://blog.bdoughan.com/2011/08/xml-schema-to-java-generating.html
下面是另一个使用XmlAdapter
的例子,当你从Java类开始:
- http://blog.bdoughan.com/2011/05/jaxb-and-joda-time-dates-and-times.html