jaxb-bindingx.xml“导致目标节点太多”

时间:2016-05-15 07:36:06

标签: java xml xpath xsd jaxb

我正在尝试从wsdl生成java类,但是我收到错误:

  

XPath评估   “// XS:元素[@名称= 'RZECZ_REJESTRACJA'] \的xs:的complexType / XS:选择\ XS:sequencexs:元素[@ REF = 'NUMER_OZNAKOWANIA']”   导致太多(2)个目标节点

我的文件XSD - kcik_rejestracja_przedmiotu.xsd

<xs:element name="RZECZ_REJESTRACJA">
<xs:complexType>
  <xs:choice>
    <xs:sequence>
      <xs:element ref="NUMER_FABRYCZNY"/>
      <xs:element minOccurs="0" ref="NUMER_OZNAKOWANIA"/>
      <xs:element ref="MARKA_RZECZY"/>
      <xs:element minOccurs="0" ref="TYP_RZECZY"/>
      <xs:element ref="RODZAJ_RZECZY"/>
    </xs:sequence>
    <xs:sequence>
      <xs:element ref="NUMER_OZNAKOWANIA"/>
      <xs:element ref="MARKA_RZECZY"/>
      <xs:element minOccurs="0" ref="TYP_RZECZY"/>
      <xs:element ref="RODZAJ_RZECZY"/>
    </xs:sequence>
  </xs:choice>
</xs:complexType>

我的jaxb-bindings.xml无效。

  <bindings schemaLocation="wsdl/SOAComponents/ApplicationObjectLibrary/KCIK/Service/schemas/kcik_rejestracja_przedmiotu.xsd">
  <bindings node="//xs:element[@name='RZECZ_REJESTRACJA']/xs:complexType/xs:choice/xs:sequence">
      <bindings node=".//xs:element[@ref='NUMER_OZNAKOWANIA']">
            <property name="NumerOznakowaniaAttr"/>
      </bindings>
  </bindings>

2 个答案:

答案 0 :(得分:0)

您可以使用此绑定文件

<bindings node="//xs:element[@name='RZECZ_REJESTRACJA']/xs:complexType/xs:choice/xs:sequence[1]">
      <bindings node=".//xs:element[@ref='NUMER_OZNAKOWANIA']">
            <property name="NumerOznakowaniaAttr"/>
      </bindings>
</bindings>

答案 1 :(得分:-1)

您的XSD应该重写为

 <xs:element name="RZECZ_REJESTRACJA">
<xs:complexType>
  <xs:choice>
    <xs:sequence>
      <xs:element ref="NUMER_FABRYCZNY"/>
      <xs:sequence minOccurs="0">
         <xs:element  ref="NUMER_OZNAKOWANIA"/>
      </xs:sequence/
      <xs:element ref="MARKA_RZECZY"/>
      <xs:sequence minOccurs="0">
         <xs:element ref="TYP_RZECZY"/>
      </xs:sequence>
      <xs:element ref="RODZAJ_RZECZY"/>
    </xs:sequence>     
  </xs:choice>
</xs:complexType>