2014-10-23 11 views
7

Ich habe die Lösung der Frage hier JAXB Simplify plugin vs *.xjb versucht.JAXB Simplify-Plugin noch verwendbar?

aber es scheiterte mit der folgenden Ausnahme

„Compiler nicht in der Lage war, diese simplify zu ehren. As-Element-Eigenschafts-Anpassung Es wird zu einer falschen Stelle angebracht ist, oder sein inkonsistent mit anderen Bindungen.“

dies verbindlich Anpassung verwendet I

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

die jaxb Plugin Einmündung Seite vereinfacht nicht zugänglich ist, so dass jeder dieses Plugin verwendet hat und ein Beispiel geben, bitte?

Hier ist meine aktualisierte Schema auf die Antwort nach

<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> 
    ... 

ich die Ausnahme während des Maven wie „Nicht unterstützte Bindung Namespace“ http://jaxb2-commons.dev.java.net/basic/simplify „Vielleicht meinte man“ http://jaxb.dev.java.net/plugin/code-injector bauen bekam ‚?‘

Antwort

4

Haftungsausschluss: Ich bin der Autor des Simplify-Plugins, das der Teil von JAXB2 Basics ist.

Das Plugin und das Projekt ist gut und lebendig, aber mein Dokumentationsserver stirbt von Zeit zu Zeit. Ich habe keine Ressourcen, um ein eigenes Hosting zu betreiben, deshalb verschiebe ich alle meine Projekte zu GitHub.

Sie können die JAXB2 Basics Projekt finden Sie hier:

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

Dokumentation ist noch nicht bewegt, aber hier ist ein Link zu einem Testprojekte, die sie verwenden:

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

Unten ist ein Fragment der schema, die simplify:as-element-property Anpassung verwendet:

<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> 

Ich werde den Server in wenigen Stunden wieder online bringen.

Bitte senden Sie Ihr Schema/Anpassung für uns zu überprüfen. Das Problem, das Sie haben, ist wahrscheinlich, dass Sie die Anpassung an die falsche Stelle gesetzt haben. Das ist manchmal schwer zu verstehen.


aktualisieren

Dieser Fehler:

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

Bedeutet, dass das Plugin aktiviert fehlt oder nicht. Ich nehme an, Sie verwenden maven-jaxb2-plugin. Dann stellen Sie sicher, Sie haben jaxb2-basics als JAXB2-Plugin und auch die -Xsimplify-Schalter enthalten. Hier ist ein sample:

 <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> 

Als nächstes ursprünglicher Fehler „nicht auf diese ... Anpassung zu ehren“, um in Zusammenhang stehen kann, wo Sie te Anpassung platzieren.Du hast es auf das Element gelegt (was ich auch tun würde).

In einigen Fällen liest XJC diese Anpassungen jedoch aus anderen Schemakomponenten. In Ihrem Fall versuchen Sie stattdessen, die Anpassung an xs:choice zu platzieren.

Wenn der Fehler weiterhin auftritt, geben Sie bitte file an issue auf GitHub das minimale Schema, das den Fehler reproduziert. Ich werde mich dann darum kümmern.

Update 2

Der Server ist wieder online, aber ich habe bewegt nun die Dokumentation des JAXB2 Simplify Plugin zum GitHub:

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

Update 3

Die Die endgültige Lösung mit Version 0.9.1 ist hier skizziert:

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

Passen Sie die Klasse mit:

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

Example.

+0

Hallo Lexicore, ich aktualisierte meine Frage mit meinem Schema geändert nach Ihrem Beispiel, aber ich habe eine weitere Ausnahme, bitte überprüfen Sie erneut meine Frage für die Ausnahme Nachricht. thx – Yinan

+0

@Yinan Bitte sehen Sie mein Update. – lexicore

+0

Hi Lexicore, ich danke Ihnen für Ihre Antwort, und ich habe versucht, die "Vereinfachung" auf Auswahl und Element zu setzen, keine funktionierte, ich werde ein Problem erstellen und mein Schema bereitstellen. – Yinan