2

我的问题是我有两个架构 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”已定义。所以我创建了一个绑定文件,它定义到 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

有人做过这样的事情吗?

4

1 回答 1

2

只需将它们分配给不同的 Java 包,就可以了。

<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>
于 2013-05-11T01:49:39.147 回答