[英]Adding annotations to JAXB-generated classes which depend on information in XSD
我有一个需要转换为Java类的WSDL + XSD。 这很简单 - wsimport
会毫无问题地处理这个问题。 但是,我还需要能够为生成的类添加注释,并且这些注释需要包含XSD中包含的信息(特别是,它们需要引用xsd:maxLength
或xsd:length
属性)。
为什么? 因为我计划使用Bindy将它们转换成平面文件。 作为参考,我知道我可以使用Annox为生成的类添加自定义注释,但据我所知,这将要求所有注释都相同,所有参数都相同,或者为每个元素指定注释单独地,无法指定注释一次以及指定其中一个参数的值对于每个元素应该是不同的某种方式(例如xpath)。
也就是说,给出了类似的模式提取
<xsd:element name="smapleRequest">
<xsd:sequence>
<xsd:element name="ELEMENT_ONE">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:length value="3" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="ELEMENT_TWO">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="8" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
</xsd:element>
我希望看到这样的类:
.
.
.
@FixedLengthRecord
public class SampleRequest {
@XmlElement(name = "ELEMENT_ONE", required = true)
@DataField(pos = 1, length=3)
protected String elementOne;
@XmlElement(name = "ELEMENT_TWO", required = true)
@DataField(pos = 4, length=8)
protected String elementTwo;
.
.
.
}
理想情况下,我希望能够在不必将XSD中的所有信息复制到JAXB绑定文件中的情况下执行此操作。 我的意思是,我可以,但每个网络服务方法可能包含数百个元素,以及许多非常非常非常快速的方法。 那时,我可能不得不使用另一个工具从COBOL生成XSD和JAXB绑定文件!
那么,有没有人知道这是否可能? 我刚刚错过了Annox的一些东西吗? 或者我只是在这里要求太多?
要自动添加XJsr303Annotations
注释,您可以使用xjc
插件https://github.com/krasa/krasa-jaxb-tools
请参阅我的答案在Java JAXB注释类生成的模式中生成XSD限制以获取详细信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.