JAXB自定义绑定 - 从架构中跳过生成的类

时间:2012-01-24 14:10:44

标签: jaxb

我有以下架构:

<xs:element name="Invoice">
    <xs:complexType>
      <xs:sequence>
        .....
        <xs:element name="InvoiceLines" type="InvoiceLinesType">
        </xs:element>
        .....
    </xs:complexType>
</xs:element>

<xs:complexType name="InvoiceLinesType">
   <xs:sequence>
     <xs:element maxOccurs="unbounded" name="InvoiceLine" type="InvoiceLineType">
     </xs:element>
   </xs:sequence>
</xs:complexType>

<xs:complexType name="InvoiceLineType">    
 <xs:sequence>
   .....
 </xs:sequence>
</xs:complexType>

问题是,它生成了类:

  • 发票 - 包含InvoiceLinesType
  • 的成员
  • InvoiceLinesType - 包含InvoiceLineType
  • 的集合
  • InvoiceLineType

所以有一个不必要的类(InvoiceLinesType),我更喜欢以下

  • 发票 - 包含InvoiceLineType
  • 的集合
  • InvoiceLineType

有没有人知道如何告诉编译器不要生成这个包(InvoiceLinesType)。

我当前的外部绑定文件是

<jxb:bindings schemaLocation="invoice.xsd" node="/xs:schema"> 
    <jxb:globalBindings>
        .....            
        <xjc:simple/>
        .....
    </jxb:globalBindings>
</jxb:bindings> 

感谢您的回复。

1 个答案:

答案 0 :(得分:0)

您必须修改您的架构 - 删除InvoiceLinesType并将InvoiceLineType作为Invoice中的无界元素。

<xs:element name="Invoice">
    <xs:complexType>
      <xs:sequence>
        .....
        <xs:element maxOccurs="unbounded" name="InvoiceLine" type="InvoiceLineType">
        </xs:element>
        .....
    </xs:complexType>
</xs:element>

<xs:complexType name="InvoiceLineType">    
 <xs:sequence>
   .....
 </xs:sequence>
</xs:complexType>