JAXB настроить привязки - пропустить сгенерированные классы из схемы - PullRequest
3 голосов
/ 24 января 2012

У меня есть следующая схема:

<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), и я предпочитаю следующий

  • Invoice - который содержитколлекция InvoiceLineType
  • InvoiceLineType

Кто-нибудь знает, как сказать компилятору не генерировать этот пакет (InvoiceLinesType).

Мой текущий файл внешней привязки есть

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

Спасибо за ответ.

1 Ответ

0 голосов
/ 24 января 2012

Вы должны будете изменить свою схему - отбросить 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...