2

我目前正在研究使用 JaxB 处理 xml 信息的读/写的 Java 代码。它填充了一个在整个程序中使用的 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 生成的类的包装类,它允许用户通过标准的 setter/getter 访问/修改变量。编组返回也可以正常工作。

我还想做的是让 JaxB 以特定的数字格式写出双精度数(类似于 DecimalFormat 像 "0.0000E00" 。这很容易做到吗?我已经被反弹到几个不同的资源来了解如何做这个,但我承认我对 xml/schemas/JaxB 的了解不是最新的。有没有办法改变 xjc 调用来做到这一点?如果可能,我想尽可能避免更改模式文件(它被不同语言的多个代码,我必须了解更改它是否会首先破坏任何这些代码)。

任何关于此事的帮助、见解或建议将不胜感激。

4

1 回答 1

1

您可以使用XmlAdapter自定义值在 XML 中的表示方式。XmlAdapter下面是一个示例,如果您从 XmlSchema 生成对象模型,则演示如何使用:

XmlAdapter这是从 Java 类开始时使用的另一个示例:

于 2011-10-13T01:04:54.220 回答