2011-10-12 109 views
2

我目前正在使用JaxB来处理xml信息的读取/写入的Java代码。它填充整个程序中使用的Java类。在某些时候,该类被整理并写回到xml中。我没有这个问题,而且事情按预期运作。JaxB输出格式?

我很好奇的是,如果有一种方法可以改变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”基本上进来作为一个双。然后我有一个围绕JaxB生成的类的包装类,允许用户通过标准的setter/getters访问/修改变量。编组回来也很好。

我还想要做的就是让JaxB以特定的数字格式(类似于“0.0000E00”这样的DecimalFormat类似的东西写出来)这是否可以轻松完成?我已经被反弹到几种不同的资源关于如何做到这一点,但我承认我对xml/schemas/JaxB的知识并不是最新的。有没有办法改变xjc调用来做到这一点?如果可能的话,我想避免在可能的情况下更改模式文件(它使用不同语言的多个代码,并且我必须明白,如果改变它会破坏任何这些代码的第一个)。

任何帮助,在这个问题上的见解或建议,将不胜感激。

回答

1

您可以使用XmlAdapter来自定义如何用XML表示值。下面是一个例子演示了如何使用XmlAdapter,如果你是从XmlSchema将产生一个对象模型:当你从Java类开始

下面是使用XmlAdapter另一个例子:

+1

Blaise。我今天无法投入工作,但我会明天尝试你的方法,并在病房后继续工作。感谢您的答复。 –

+0

布莱斯,感谢您的资源!使用你的教程,我能够让事情按照我的意愿行事。我唯一的评论是,尽管我最终使用了一个外部绑定文件,正如您的示例所示,但我无法将其限制为特定的元素。但是,我能够创建一个全局绑定(最终可以达到我的目的)完成同样的任务。当我试图限制它到一个特定的元素时,例如在你的例子中,我开始从xjc接收NullPointerExceptions。 –