WS响应中没有元素内容。上部元素中只有一个xmlns:xsi =“ http://www.w3.org/2001/XMLSchema-instance”

时间:2019-01-25 16:02:34

标签: xml jaxb spring-ws

我将Java和Spring-ws用于Web服务。 我使用合同优先的方法。因此,我生成了Jaxb Java类。

在ws服务响应的xsd定义中,我具有元素“风险”的此定义

<xs:complexType name="Risk">
  <xs:complexContent>
     <xs:extension base="ns26311:Risk">
        <xs:sequence>
          <xs:group ref="ns26311:RiskData"/>
        </xs:sequence>
     </xs:extension>
  </xs:complexContent>
</xs:complexType>

“ ns26311:Risk”是通过不同的XSD定义的

<xs:complexType name="Risk" abstract="true">
    <xs:sequence/>
</xs:complexType>

“ ns26311:RiskData”是通过这种方式定义的(在不同的XSD中)

<xs:group name="RiskData">
    <xs:sequence>
      <xs:element name="reRisk" type="ns29421:riskByEval" minOccurs="1"    maxOccurs="1"/>
    </xs:sequence>
</xs:group>

“ ns29421:riskByEval”是以这种方式在不同的XSD中定义的

<xs:simpleType name="riskByEval">
    <xs:restriction base="xs:string">
      <xs:maxLength value="10"/>
      <xs:minLength value="1"/>
    </xs:restriction>
</xs:simpleType>

在元素“ reRisk”的Web服务XML响应中,有这段代码片段

<ns3:risk xsi:type="ns6:Risk" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>

元素“风险”中没有元素内容。

“风险”元素的片段内容应如下所示:

<ns2:risk>
  <ns13:reRisk>some value</ns13:reRisk>
</ns2:risk>

在Java Jaxb对象(代表响应)中,reRisk字段中有一个值。

有人知道为什么响应中没有填写元素reRisk的原因吗? xsi:type =“ ns6:Risk” xmlns:xsi =“ http://www.w3.org/2001/XMLSchema-instance” XML响应中的代码片段)?

非常感谢您的建议。

1 个答案:

答案 0 :(得分:0)

问题在另一个地方。

当我通过myBatis设置整个Java响应对象的Risk属性时,我为此对象设置了不同类型的对象(来自不同的包)。

这就是为什么我得到XML奇怪的响应的原因:-)