生成的源中的Netbeans注释

时间:2017-10-23 11:23:59

标签: java netbeans jaxb annotations

我正在使用NetBeans 8.2.

我使用提供给我的 JaxB xsd 架构生成了一些Java源代码。

(顺便提一下xsd架构,不应该改变)

现在为了能够正确地将对象编组到xml(例如,具有正确的时间戳格式),我必须向生成的源添加一些注释,如下所示

 @XmlJavaTypeAdapter(DateTimeAdapter.class)
    protected XMLGregorianCalendar timestamp;

一切顺利。

但问题是,在清理和构建时,所有生成的文件都会重新生成,并且添加的注释会丢失。

我能做什么,以便:

  1. 清理和构建将保持生成的源不受影响
    1. 需要注释会在清理和构建后自动插入到生成的文件中吗?

2 个答案:

答案 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。

  •   

https://docs.oracle.com/cd/E17802_01/webservices/webservices/docs/1.5/tutorial/doc/JAXBUsing4.html#wp148366

答案 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>
...