2014-10-23 22 views
7

Sorunun çözümünü burada denedim JAXB Simplify plugin vs *.xjb.JAXB Basitleştirilmiş eklenti hala kullanılabilir mi?

ama

şu istisna ile başarısız oldu "derleyici Bunu basitleştirmek onurlandırmak edemedi. As-eleman-mülk özelleştirme bir yanlış yere bağlı veya başka bağlamaları ile tutarsız."

bu özelleştirme ben erişilebilir, böylece herkes bu eklenti kullandı değildir eklentisi izdiham sayfasını basitleştirmek

<jaxb:bindings node="//xs:complexType[@name='Op']//xs:choice/xs:element[@name='Time']"> 
    <simplify:as-element-property/> 
</jaxb:bindings> 

JAXB kullanılan ve bir örnek verebilir misin, lütfen bağlayıcıdır? İşte

benim güncellenen şema ben maven sırasında istisna http://jaxb.dev.java.net/plugin/code-injector "Belki geliyordu." "Desteksiz bağlayıcı ad" http://jaxb2-commons.dev.java.net/basic/simplify gibi inşa var

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" xmlns="http://www.amadeus.com/APT/FOM/00" targetNamespace="http://www.amadeus.com/APT/FOM/00" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/jaxb http://java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:simplify="http://jaxb2-commons.dev.java.net/basic/simplify" jaxb:extensionBindingPrefixes="simplify"> 
... 
... 
<xs:complexType> 
    <xs:sequence> 
    <xs:choice minOccurs="1" maxOccurs="1"> 
     <xs:element name="Time" type="xs:dateTime" minOccurs="1" maxOccurs="1"> 
      <xs:annotation>     
       <xs:appinfo> 
       <simplify:as-element-property /> 
       </xs:appinfo> 
      </xs:annotation> 
     </xs:element>    
     ... ... 
    </xs:choice> 
    ... 

cevap göredir '?'

cevap

4

Yasal Uyarı:JAXB2 Basics'un bir parçası olan Simplify eklentisinin yazarıyım.

Projenin iyi ve canlı eklentisi, ancak dokümantasyon sunucum zaman zaman ölüyor. Kendi hostingimi sürdürecek kaynağım yok, bu yüzden tüm projelerimi GitHub'a taşıyorum.

Burada JAXB2 Temelleri projeyi bulabilirsiniz:

https://github.com/highsource/jaxb2-basics/tree/master/tests/issues

:

https://github.com/highsource/jaxb2-basics

Belgeler burada henüz taşınmış değil, kullanmak deney projelerinden biri için bir bağlantı var Aşağıda simplify:as-element-property özelleştirme kullanan schema'un bir parçası özelleştirme:

<xs:complexType name="gh1" mixed="true"> 
    <xs:sequence> 
     <xs:element name="a" type="xs:string"> 
      <xs:annotation> 
      <xs:appinfo> 
       <simplify:as-element-property/> 
      </xs:appinfo> 
     </xs:annotation> 
     </xs:element> 
     <xs:element name="b" type="xs:int"/> 
    </xs:sequence> 
</xs:complexType> 

Sunucuyu birkaç saat içinde çevrimiçi duruma getireceğim.

Lütfen kontrol etmek için şema/özelleştirme gönderin. Sahip olduğunuz sorun, muhtemelen özelleştirmeyi yanlış yere koymanızdır. Bu bazen anlamak zor.


Güncelleme

Bu hata:

"Unsupported binding namespace "http://jaxb2-commons.dev.java.net/basic/simplify". Perhaps you meant "http://jaxb.dev.java.net/plugin/code-injector"?" 

eklentisi eksik veya aktif olmadığı anlamına gelir. maven-jaxb2-plugin'u kullandığınızı farz ediyorum. Daha sonra JAXB2 eklentisi olarak jaxb2-basics olduğundan ve ayrıca -Xsimplify anahtarını dahil ettiğinizden emin olun. İşte sample var:

 <plugin> 
      <groupId>org.jvnet.jaxb2.maven2</groupId> 
      <artifactId>maven-jaxb2-plugin</artifactId> 
      <configuration> 
       <extension>true</extension> 
       <args> 
        <arg>-Xsimplify</arg> 
       </args> 
       <plugins> 
        <plugin> 
         <groupId>org.jvnet.jaxb2_commons</groupId> 
         <artifactId>jaxb2-basics</artifactId> 
        </plugin> 
       </plugins> 
      </configuration> 
     </plugin> 

Ardından, orijinal hata "bu ... özelleştirme alamıyoruz" te özelleştirme yerleştirmek NEREDE ilgili olabilir.Bunu elemanın üzerine koymuştun (ben de bunu yapardım).

Ancak bazı durumlarda XJC diğer şema bileşenlerinden Bu özelleştirmeleri okur. Durumunuzda, özelleştirmeyi xs:choice yerine yerleştirmeyi deneyin. GitHub üzerinde

Hata devam ederse

, lütfen file an issue hata üretir asgari şema sağlar. O zaman ben hallederim.

Güncelleme 2

sunucu tekrar, ama şimdi GitHub'dan için JAXB2 Simplify Plugin belgelerine taşındı:

https://github.com/highsource/jaxb2-basics/wiki/JAXB2-Simplify-Plugin

Güncelleme 3

sürümü 0.9.1 ile nihai çözüm burada çizilir:

<simplify:property name="type2OrType3"> <simplify:as-element-property/> </simplify:property>

Example:

https://github.com/highsource/jaxb2-basics/issues/3

ile sınıfını özelleştirin.

+0

Merhaba Lexicore, senin örneğe göre modifiye benim şema ile sorumu güncellenen, ama başka bir istisna, istisna mesajı için tekrar sorumu kontrol ediniz var. thx – Yinan

+0

@Yinan benim güncelleştirme bakınız. – lexicore

+0

Merhaba Lexicore, cevabınız için teşekkür ederim ve seçim ve eleman üzerinde "basitleştirmeyi" koymaya çalıştım, işe yaramadı, bir sorun oluşturacağım ve şemamı oluşturacağım. herkes için – Yinan