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>

第二个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>

现在这两个 xsd 在两个不同的包中生成两组类。我正在使用 JAXB 来解组收到的 xml。xmls 是从这两个 xsd 生成的。

在创建 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

由于您的 2 个 XML 模式具有具有相同名称和名称空间的全局元素,因此您将无法JAXBContext在两个模型上创建一个。您可以执行以下操作之一:

  1. JAXBContext为每个模型创建一个单独的。
  2. 使用名称空间来区分这 2 个 XML 模式。
于 2012-12-19T10:04:57.090 回答