xml - WS 响应中没有元素内容。上层元素中只有一个 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
问题描述
我将 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 响应中的代码)?
非常感谢您的建议。
解决方案
问题出在不同的地方。
当我通过 myBatis 设置整个 Java 响应对象的 Risk 属性时,我为该属性设置了不同类型的对象(来自不同的包)。
这就是为什么我在 XML 中得到奇怪的响应 :-)
推荐阅读
- c++ - 在 CMakeLists.txt 中执行 cmake 与在终端中执行 cmake 有什么区别,我们如何使其行为相同?
- c# - Xamarin/XAML/C# - 构建一个计算 DateTime 数组中所有周末天数的方法
- matrix - #Fail2ban,矩阵(突触)的失败正则表达式请求
- flutter - Flutter 没有为“Object”类型定义运算符“[]”
- android - 源图像的文件名无效 - 无法更改而不丢失消息
- lighthouse - 需要帮助了解多个构建后生成的 Lighthouse 服务器仪表板
- android - 底部导航视图中的片段路由
- mysql - mySql 更新查询返回 ERROR 1242: 1242: 子查询返回多于 1 行
- r - R Shiny:从上传的数据运行动态 For 循环
- postgresql - jsonb 交叉连接未在 Postgres 中返回 N*M 行