2010-09-16 61 views
5

我有一个模式,由几个不同的应用程序读取表单生成;其中一个使用JAXB/XJC来编译它的类结构。该模式包含字段的友好名称APPINFO信息,例如:JAXB - XJC可以将appinfo编译到类结构中吗?

<xs:element name="HomeAddress" type="xs:string"> 
    <xs:annotation> 
    <xs:appinfo>Home address</xs:appinfo> 
    </xs:annotation> 
</xs:element> 

有没有办法让XJC编译在这个信息?

+0

以什么方式?你的例子中你想要的结果是什么? – musiKk 2010-09-16 09:51:17

+0

只要我可以在运行时从Java访问它,它并不重要。通过注释(我可以通过反射来获取)或静态成员看起来是最简单的。 – 2010-09-16 10:00:36

回答

5

可以使用Annotate plugin任意Java注释添加到您的模式派生类。有了这个插件,您可以管理像语法:

<xs:element name="HomeAddress" type="xs:string"> 
    <xs:annotation> 
    <xs:appinfo> 
     <ann:annotate xmlns:ann="http://annox.dev.java.net/com.acme.foo"> 
     <my:Label value="Home address"/> 
     </ann:annotate> 
    </xs:appinfo> 
    </xs:annotation> 
</xs:element> 

的你会得到这样的:

@Label("Home address") // FQCN is com.acme.foo.Label 
public String getHomeAddress(...) {} 
+0

非常好,谢谢! – 2010-10-05 09:00:13

+0

@lexicore:如果你不能修改模式,因为它是由第三方提供的? – 2012-04-06 08:15:39

+0

@Artem Oboturov:您可以在不修改模式的情况下对绑定文件('* .xjb')做同样的事情。 – lexicore 2012-04-06 11:46:57