root元素已经定义了jaxb

时间:2013-05-10 16:03:23

标签: java xsd jaxb2

我的问题是我有两个Schemas A.xsd B.xsd

他们都拥有相同的根,我会尝试举例说明

 A.xsd
 <xs:element name="A">
   <xs:complexType>
      .my elements on A
   </xs:complexType>
 </xs:element>

 B.xsd
 <xs:element name="A">
  <xs:complexType>
   .my elements on B
  </xs:complexType>
 </xs:element>

当我尝试生成类时,输出是元素'A'已经定义。 所以我创建了一个Binding文件,它定义为xsd A,为元素A创建一个C类,而xsd B为元素A创建一个D类

 X.xjb
 <bindings schemaLocation="A.xsd">
  <bindings node="//xs:element[@name='A']">
   <class name="C">
  </bindings>
 </bindings>

 <bindings schemaLocation="B.xsd">
  <bindings node="//xs:element[@name='A']">
   <class name="D">
  </bindings>
 </bindings>

但没有工作,它输出相同的错误,'A'已经定义,所以我尝试使用属性而不是绑定文件上的类。

 X.xjb
 <bindings schemaLocation="A.xsd">
  <bindings node="//xs:element[@name='A']">
   <property name="C">
  </bindings>
 </bindings>

 <bindings schemaLocation="B.xsd">
  <bindings node="//xs:element[@name='A']">
   <property name="D">
  </bindings>
 </bindings>

,也没有工作

他们没有targetNamespace

有人做过这样的事吗?

1 个答案:

答案 0 :(得分:2)

只需指定他们to different Java packages就可以了。

<jxb:schemaBindings>
    <jxb:package name="primer.myPo">
        <jxb:javadoc>
            <![CDATA[<body> Package level documentation for generated package primer.myPo.</body>]]>
        </jxb:javadoc>
    </jxb:package>
    <jxb:nameXmlTransform>
        <jxb:elementName suffix="Element"/>
    </jxb:nameXmlTransform>
</jxb:schemaBindings>