2016-03-23 37 views
1

JAXB ile XSD'lerden java sınıfları oluşturmaya çalışıyorum.JAXB: package.package. <Type>, package.package dosyasında tanımlanmıştır. <Type>. <Type>

XSD'ler şirketimdeki resmi xsds'tir, dolayısıyla onları yalnızca projem için değiştiremiyorum. Bu siteyi denedikten sonra, soruyu doğrudan sormaya karar verdim.

Bu konuda neden
<xs:element name="Line" minOccurs="0" maxOccurs="999"> 
                <xs:complexType> 
                 <xs:sequence> 
                  <xs:element name="Line" minOccurs="0" maxOccurs="999"> 
                   <xs:complexType> 
                    <xs:attribute name="reference" type="xs:toto" use="optional"> 
                    </xs:attribute> 
                   </xs:complexType> 
                  </xs:element> 
                 </xs:sequence> 
                 <xs:attribute name="reference" type="xs:toto" use="optional"> 

                 </xs:attribute> 
                </xs:complexType> 
               </xs:element> 

: package.Index.Line zaten elimden oluşturulan kodun baktıktan sonra

package.Index tanımlanan

benim XSD bu var Başka bir statik iç sınıf Çizgisine (başka bir Dizin altında) bir statik iç Sınıf Çizgisine sahip olduğumuzu görelim

Hat üzerinde hata alıyorum (üstte) İç içe tipi Satır, bir kapama türünü gizleyemiyor

Ad değiştiğinde (ya xsd'de veya java sınıfından sonraki nesilde) artık bir sorunum yok. Index altında aslında iki düğüm Hattı Çünkü ben bu deneyin bu yüzden ... Ben aynı sorunu var

<jaxb:bindings schemaLocation="file:../path/myschema.xsd" node="//xs:element[@name='Index']"> 
    <jaxb:bindings node=".//xs:element[@name='Line']" multiple="true"> 
     <jaxb:property name="Lines"/> 
    </jaxb:bindings> 
</jaxb:bindings> 

:

<jaxb:bindings schemaLocation="file:path/myxsd.xsd" node="//xs:element[@name='Index']/xs:element[@name='Line']"> 
    <jaxb:bindings node="//xs:element[@name='Line']" multiple="true"> 
     <jaxb:property name="Lines"/> 
    </jaxb:bindings> 
</jaxb:bindings> 

Ben bağlayıcı bir dosya oluşturmak için çalıştı com.sun.istack.SAXParseException2: ya

<jaxb:bindings schemaLocation="file:path/myxsd.xsd" node="//xs:element[@name='Index']"> 
    <jaxb:bindings node="//xs:element[@name='Line']/xs:element[@name='Line']" multiple="true"> 
     <jaxb:property name="Lines"/> 
    </jaxb:bindings> 
</jaxb:bindings> 

Ama bir kuşak sorunu olsun XPA "// xs: element [@ name = 'Index']/xs: element [@ name = 'Line']" hedefinin değerlendirilmesi "boş hedef düğümündeki sonuçlar

Tamamen kayboldum. bireysel sınıflar olarak üretmek için önceden)

Geoffrey

+0

Satır, xs: complexType' içinde. 'xs: element' satırında değil – ulab

+0

Peki bunu nasıl yapacaksınız? Bu çalışmıyor ' \t \t \t \t \t \t \t \t ' – Geoffrey

+0

aşağıda cevabımı görüyoruz. – ulab

cevap

0

İlk yapılandırmak bağlamaları

Teşekkür; Uzun ben T_T

Eğer önerileriniz varsa

hissetmek üzüntü telafi etmek bütün gün nutella yiyorum.

<jaxb:globalBindings localScoping="toplevel"/> 

Ardından, aşağıdaki gibi başvurulan elemanları XPath tam kullanın.

<bindings version="2.1" xmlns="http://java.sun.com/xml/ns/jaxb" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema"> 

    <globalBindings localScoping="toplevel"/> 

    <bindings schemaLocation="yourschema.xsd"> 
      <bindings node="//xs:element[@name='Index']/xs:complexType/xs:sequence/xs:element[@name='Line']/xs:complexType"> 
       <class name="Lines1"/> 
      </bindings> 
    </bindings> 

     <bindings schemaLocation="yourschema.xsd"> 
       <bindings node="//xs:element[@name='Index']/xs:complexType/xs:sequence/xs:element[@name='Line']/xs:complexType/xs:sequence/xs:element[@name='Line']/xs:complexType"> 
        <class name="Lines2"/> 
       </bindings> 
    </bindings> 

</bindings> 
İlgili konular