2

ここに2つのxsd定義があり、どちらもほぼ90%類似しています。最初のxsdのスケルトンは次のとおりです。

XSD1 :

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="apf2doc">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="request"/>
                <xs:element ref="account"/>
                <xs:element ref="financial_transaction"/>
                <xs:element ref="event_data" minOccurs="0"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

そして2番目のxsdは次のとおりです。

XSD2:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="apf2doc">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="request"/>
                <xs:element ref="account"/>
                <xs:element ref="message"/>
                <xs:element ref="event_data" minOccurs="0"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

これらの2つのxsdsは、2つの異なるパッケージに2セットのクラスを生成します。受信したxmlをアンマーシャリングするためにJAXBを使用しています。xmlは、これら2つのxsdsから生成されます。

JAXBコンテキストを作成している間、ほとんどのクラスが競合を引き起こすため、エラーが発生します。

エラートレースは次のとおりです。

The element name {}userid has more than one mapping. This problem is related to the     following location: 
at public javax.xml.bind.JAXBElement   
generated.order.ObjectFactory.createUserid(java.lang.String) at   
generated.order.ObjectFactory this problem is related to the following location:
at public javax.xml.bind.JAXBElement   
generated.usage.ObjectFactory.createUserid(java.lang.String) at 
generated.usage.ObjectFactory 

誰かが私に解決策を提案してくれるといいですね。

ありがとう。

4

1 に答える 1

2

JAXBContext2 つの XML スキーマには同じ名前と名前空間を持つグローバル要素があるため、両方のモデルで単一のものを作成することはできません。次のいずれかを実行できます。

  1. JAXBContextモデルごとに個別に作成します。
  2. 名前空間を使用して、2 つの XML スキーマを区別します。
于 2012-12-19T10:04:57.090 に答える