我将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响应中的代码片段)?
非常感谢您的建议。
答案 0 :(得分:0)
问题在另一个地方。
当我通过myBatis设置整个Java响应对象的Risk属性时,我为此对象设置了不同类型的对象(来自不同的包)。
这就是为什么我得到XML奇怪的响应的原因:-)