JAXB,Netbeans和接口插入插件

时间:2010-04-16 15:16:49

标签: jaxb

我无法获取生成的类来实现任何接口。

这是我的xml架构文件:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"            
        xmlns:jxb="http://java.sun.com/xml/ns/jaxb/"
        xmlns:ai="http://jaxb.dev.java.net/plugin/if_insertion"
        jxb:extensionBindingPrefixes="ai">


    <xs:element name="header">
        <xs:annotation>
            <xs:appinfo>
                <ai:interfaces check="1">
                  utility.RuleInterface
                </ai:interfaces>
            </xs:appinfo>
        </xs:annotation>

        <xs:complexType>
            bla bla bla
        </xs:complexType>

    ....

我检查了JAXB选项中的“扩展”选项,并将xjc-if-ins.jar添加到项目属性的“库”部分。

但是生成的Header类没有实现utility.RuleInterface

我可以弄清楚我做错了什么......是不是缺少了什么?

2 个答案:

答案 0 :(得分:1)

你真的启动了这个插件吗?使用-Xinheritance等选项

这是您可以使用的另一个插件:

http://confluence.highsource.org/display/J2B/Inheritance+plugin

这是一个示例项目(Ant和Maven):

http://download.java.net/maven/2/org/jvnet/jaxb2_commons/jaxb2-basics-sample-po/0.5.2/

答案 1 :(得分:1)

对于遇到同样问题的其他人来说,这是另一个注释。 xml模式文件中的元素应该以这种方式编写:

<xs:complexType name="header">
   <xs:annotation>
        <xs:appinfo>
            <ai:interfaces check="0">
              utility.RuleInterface
            </ai:interfaces>
        </xs:appinfo>
    </xs:annotation>          
</xs:complexType>

你可以参考它们:

<xs:element name="rule">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="header"  type="header" maxOccurs="unbounded" />
                ...
            </xs:sequence>
        <xs:complexType>

我的问题是我已将标题声明为<xs:element name="header">而我指的是<xs:element ref="header" maxOccurs="unbounded" />的元素,这种方法似乎不起作用...