4

maven-jaxb2-pluginを使用して、xsdからjaxb注釈付きクラスを生成します。私はそれらのような多くのxsdファイルを持っています:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="A3">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="loginPartner">
          <xs:complexType>
            <xs:sequence>
              <xs:element type="xs:string" name="login"/>
              <xs:element type="xs:string" name="password"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="A3">
    <xs:complexType>
      <xs:sequence>
        <xs:element type="xs:string" name="errorCode"/>
        <xs:element type="xs:string" name="errorDescription"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

Mavenプラグインを実行すると、エラーが発生します。

[エラー]schema(s).Location [file:schema1.xsd{10,16}]の解析中にエラーが発生しました。org.xml.sax.SAXParseException:'A3'はすでに定義されています

これを修正する方法はありますか?実際、サーバーとの間の要求/応答メッセージを表す多くのXSDがあります。メッセージの作成、検証、解析を簡素化したい。多分これに対する別の解決策はありますか?

4

3 に答える 3

6

私も同様の問題を抱えていました。マッピングクラスを生成するためにJAXBを介して(maven-jaxb2-pluginを介して)実行していた2つの別個の独立したWSDL(それぞれにいくつかのスキーマ定義があります)がありました。

私のWSDLは、XJCがチョークする原因となっている重複したスキーマ定義を共有していました。

どちらも独立しているため、maven-jaxb2-pluginを2回別々に実行することでJAXBマッピングを生成できました(WSDLごとに1つ)(ここで説明します-jaxb / Mavenに複数のスキーマパッケージを生成するように指示するにはどうすればよいですか?)。

于 2012-05-31T15:51:35.043 に答える
1

同じ名前空間内に競合する要素定義を含めることはできません。これは、Javaの特定のパッケージで同じ名前の複数のクラスを許可しないことと同じです。最善の策は、それらを異なる名前または異なる名前空間で定義することです。

于 2011-12-28T04:38:56.790 に答える
1

jaxbバインディングファイルでxsdの2番目または最初のA3の名前を変更できます

<jaxb:bindings schemaLocation="filePath.xsd" node="/xs:schema">
        <jaxb:bindings node="//xs:element[@name='A3']">
            <jaxb:property name="SecondA3"/>
        </jaxb:bindings>
</jaxb:bindings>
于 2017-09-28T08:04:26.837 に答える