7

ここでJAXB Simplify plugin vs *.xjbという質問の解決策を試しました。

しかし、次の例外で失敗しました

" コンパイラは、この simple:as-element-property のカスタマイズを受け入れることができませんでした。間違った場所にアタッチされているか、他のバインディングと矛盾しています。"

これは私が使用したカスタマイズバインディングです

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

jaxb simple プラグインの合流ページにアクセスできないため、このプラグインを使用した人はいますか?例を教えてください。

これが答えによる私の更新されたスキーマです

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

「サポートされていないバインディング名前空間」 http://jaxb2-commons.dev.java.net/basic/simplifyのような Maven ビルド中に例外が発生しまし/コードインジェクター「?」

4

1 に答える 1

6

免責事項:私はJAXB2 Basicsの一部である Simplify プラグインの作成者です。

プロジェクトのプラグインは健在ですが、私のドキュメンテーション サーバーはときどき停止します。独自のホスティングを維持するためのリソースがないため、すべてのプロジェクトを GitHub に移動しています。

JAXB2 Basics プロジェクトは次の場所にあります。

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

ドキュメントはまだ移動されていませんが、それを使用するテスト プロジェクトの 1 つへのリンクは次のとおりです。

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

以下は、カスタマイズを使用するスキーマの一部です。simplify:as-element-property

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

数時間後にサーバーをオンラインに戻します。

スキーマ/カスタマイズを投稿して確認してください。あなたが抱えている問題は、おそらくカスタマイズを間違った場所に置いたことです。これを理解するのが難しい場合があります。


アップデート

このエラー:

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

プラグインが見つからないか、アクティブ化されていないことを意味します。を使用すると仮定しますmaven-jaxb2-plugin。次に、JAXB2プラグインがあり、スイッチjaxb2-basicsも含まれていることを確認してください。-Xsimplifyここにサンプルがあります:

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

次に、元のエラー「これを尊重できません...カスタマイズ」は、カスタマイズを配置する場所に関連している可能性があります。あなたはそれを要素に配置しました(これも私がすることです)。

ただし、場合によっては、XJC がこれらのカスタマイズを他のスキーマ コンポーネントから読み取ります。あなたの場合、代わりにカスタマイズを配置してみてくださいxs:choice

エラーが続く場合は、エラーを再現する最小限のスキーマを提供して、GitHubに問題を報告してください。それなら私が手配します。

更新 2

サーバーはオンラインに戻りましたが、JAXB2 Simplify PluginのドキュメントをGitHub に移動しました。

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

アップデート 3

バージョン 0.9.1 での最終的な解決策は次のとおりです。

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

以下を使用してクラスをカスタマイズします。

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

于 2014-10-23T11:27:58.603 に答える