我在JAXB生成的类中有以下注释
@XmlType(name = "MessageInfoType", propOrder = {
"debugTraceBoolean",
"clientHostnameString",
"endUserIPAddress"
})需要使用自定义绑定在JAXB类中生成以下注释,即需要编辑上述注释,并使用如下类型的注释添加命名空间。
@XmlType(name = "MessageInfoType", propOrder = {
"debugTraceBoolean",
"clientHostnameString",
"endUserIPAddress"
}, namespace="urn:expedia:e3:data:messagetypes:defn:v4")我的xjb文件是:
<jaxb:bindings schemaLocation="../../serviceDescription/atlantis/common/com.expedia.e3.data.messagetypes.v4.xsd">
<jaxb:bindings node="//xs:complexType[@name='MessageInfoType']">
<annox:annotate target="field">
<annox:annotate annox:class="javax.xml.bind.annotation.XmlType"
namespace="urn:expedia:e3:data:messagetypes:defn:v4"/>
</annox:annotate>
</jaxb:bindings>
</jaxb:bindings>发布于 2012-08-31 14:08:35
从属声明:我是Annotate Plugin的作者。
如果您尝试添加已经存在的注释(相同的位置,相同的注释类),这将修改现有的注释,而不是添加第二个注释。目前我不确定这是否会覆盖所有的属性或合并新的属性,但绝对值得一试。
更新:
我已经重新检查过了。实际上,它已经实现了(应该是0.6.4版本,我刚刚用0.6.5-SNAPSHOT检查过了)。
检查此示例:
下面是绑定:
<jaxb:bindings node="xs:complexType[@name='issueJIIB39CType']/xs:attribute[@name='test']">
<annox:annotate target="field">
<annox:annotate annox:class="javax.xml.bind.annotation.XmlAttribute" required="false"/>
</annox:annotate>
</jaxb:bindings>如果存在此绑定,您将获得:
@XmlAttribute(name = "test", required = false)
protected String test;如果不是,它将是这样的:
@XmlAttribute(name = "test", required = true)
protected String test;因此,正如我所说的,如果您在非常相同的位置和非常相同的类中添加注释,它们将被合并。
https://stackoverflow.com/questions/12205652
复制相似问题