加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 向JAXB生成的类添加注释,这些类依赖于XSD中的信息

发布时间:2020-12-15 02:34:38 所属栏目:Java 来源:网络整理
导读:我有一个需要转换为 Java类的WSDL XSD.这很简单 – wsimport会毫无问题地处理这个问题.但是,我还需要能够为生成的类添加注释,并且这些注释需要包含XSD中包含的信息(特别是,它们需要引用xsd:maxLength或xsd:length属性). 为什么?因为我计划之后使用Bindy将
我有一个需要转换为 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的一些东西吗?或者我只是在这里要求太多?

解决方法

你有几个选择:XJC插件是一条路线,而Annox看起来很有趣.但我不是专家,所以我会让别人和你探讨.

我建议你考虑的另一条路线,如果你遇到第一个,就是通过annotation processing(以前的apt工具,现在是javac工具的一部分)对你生成的JAXB源进行后期处理,以访问XSD并附加你的注释在飞行中.不确定它是否适用于所有情况,但在您给出的示例中,JAXB生成的注释应足以构造XPath表达式以读取相应的XML元素类型特征.假设您的需求基本上在字段长度附近,那应该是很少的用例和XPath表达式.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读