2011-07-27 50 views
3

我有這個XSD文件的Java類:生成XSD使用的IntelliJ(JAXB插件),擴展現有的類文件

<?xml version="1.0" encoding="UTF-8"?> 
    <xs:schema targetNamespace="http://www.example.com/dnavigator" 
     xmlns:xs="http://www.w3.org/2001/XMLSchema" 
     xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" 
     xmlns:dn="http://www.example.com/dnavigator" 
     attributeFormDefault="unqualified" 
     elementFormDefault="qualified" 
     jaxb:version="2.0"> 

<xs:annotation> 
    <xs:appinfo> 
     <jaxb:globalBindings enableJavaNamingConventions="true"/> 
    </xs:appinfo> 
</xs:annotation> 

<xs:element name="DynamicNavigators"> 

    <xs:complexType> 

     <xs:sequence> 

      <xs:element name="DynamicNavigator" 
         type="dn:DynamicNavigator" 
         minOccurs="1" 
         maxOccurs="unbounded"> 

       <xs:annotation> 

        <xs:documentation> 

        </xs:documentation> 

        <xs:appinfo> 
         <jaxb:property name="DynamicNavigators"/> 
        </xs:appinfo> 

       </xs:annotation> 

      </xs:element> 

     </xs:sequence> 

    </xs:complexType> 

</xs:element> 

<xs:complexType name="DynamicNavigator"> 

    <xs:sequence minOccurs="0" 
       maxOccurs="unbounded"> 

      <xs:element name="example" 
         type="xs:string" 
         minOccurs="1" 
         maxOccurs="1"/> 

    </xs:sequence> 

</xs:complexType> 

</xs:schema> 

我想,這將生成類DynamicNavigator,擴展類com。示例。 MyClass

我該怎麼辦?

謝謝。

回答

1

JAXB僅爲complexTypes創建對象,因此不要將complexTypes包裝在'xs:element'標記中。嘗試在complexType中使用'xs:element ref',而不是在complexType中創建新元素。例如:

<xs:complexType name="DynamicNavigatorsType"> 
    <xs:sequence> 
    <xs:element ref="dn:DynamicNavigator" maxOccurs="unbounded"/> 
    </xs:sequence> 
</xs:complexType> 

<xs:complexType name="DynamicNavigatorType"> 
    <xs:sequence> 
    <xs:element ref="dn:example"/> 
    </xs:sequence> 
</xs:complexType> 

<xs:element name="DynamicNavigator" type="dn:DynamicNavigatorType"/> 
<xs:element name="example" type="xs:string"/> 
+0

我不相信這會回答@Rotem所問的問題。你在談論模式約定,而Rotem正在問如何讓xjc/jaxb生成擴展現有/自定義基類的pojo類。 –

+0

Helter是對的。雖然我感謝你爲我提出的建議,但它並沒有真正與我的問題相關。我在想更類似於「xjc:superclass」或「jaxb:class implclass」的東西 – Rotem