我正在使用NetBeans 8.2.
我使用提供给我的 JaxB 和 xsd 架构生成了一些Java源代码。
(顺便提一下xsd
架构,不应该改变)
现在为了能够正确地将对象编组到xml
(例如,具有正确的时间戳格式),我必须向生成的源添加一些注释,如下所示
@XmlJavaTypeAdapter(DateTimeAdapter.class)
protected XMLGregorianCalendar timestamp;
一切顺利。
但问题是,在清理和构建时,所有生成的文件都会重新生成,并且添加的注释会丢失。
我能做什么,以便:
或
答案 0 :(得分:1)
我认为您想要存档的内容可以使用jax绑定自定义:
通过外部文件对JAXB绑定进行自定义 包含绑定声明的方式采用如下所示的一般形式。
<jxb:bindings schemaLocation = "xs:anyURI">
<jxb:bindings node = "xs:string">*
<binding declaration>
<jxb:bindings>
</jxb:bindings>
schemaLocation是对远程模式的URI引用
node是一个XPath 1.0表达式,用于标识其中的架构节点 与给定绑定声明关联的schemaLocation。
答案 1 :(得分:1)
因此,jaxb
中的Netbeans
绑定创建了JaxBBindings
目录,其中放置了绑定xsd
文件。
需要做的是编辑此xsd
并添加正确的(内联)绑定自定义。
请注意,为了进行以下编译,我必须在"Use Extension"
菜单中检查"Change JAXB options"
(右键单击绑定子文件夹)。
<xsd:schema ...
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
jaxb:extensionBindingPrefixes="xjc"
>
...
<xsd:element name="Timestamp" type="xsd:dateTime">
<xsd:annotation>
<xsd:appinfo>
<xjc:javaType name="javax.xml.datatype.XMLGregorianCalendar" adapter="myadapters.DateTimeAdapter"/>
</xsd:appinfo>
</xsd:annotation>
</xsd:element>
...