我在JAXB生成的类
中有以下注释@XmlType(name = "MessageInfoType", propOrder = {
"debugTraceBoolean",
"clientHostnameString",
"endUserIPAddress"
})
需要在JAXB类中使用自定义绑定生成以下注释。需要编辑上面的注释并使用annox添加命名空间,如下所示。
@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>
答案 0 :(得分:4)
附属免责声明:我是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;
所以,正如我所说,如果你在同一个地方和同一个班级添加一个注释,它们将被合并。