java - spring端点SOAP请求有效负载子元素在嵌套命名空间时在XSD中解析为pojo时获取空值
问题描述
我有这样的父 XSD
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://tempuri.org/"
xmlns:ns2="http://schemas.datacontract.org/2004/07/Lia.Core.Models.Masterdata"
elementFormDefault="qualified" attributeFormDefault="qualified">
<xs:import namespace="http://schemas.datacontract.org/2004/07/Lia.Core.Models.Masterdata" schemaLocation="masterdataelements.xsd" />
<xs:element name="UploadCostCentres">
<xs:complexType>
<xs:sequence>
<xs:element name="costcentres" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="CostCentre" type="ns2:CostCentre" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="UploadCostCentresResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="status" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="message" type="xs:string" minOccurs="0"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
并且也有 import xsd 像下面的类型
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://schemas.datacontract.org/2004/07/Lia.Core.Models.Masterdata"
xmlns:tns="http://schemas.datacontract.org/2004/07/Lia.Core.Models.Masterdata"
elementFormDefault="qualified">
<xs:complexType name="CostCentre">
<xs:sequence>
<xs:element name="CompanyCode" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="CostCentreName" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="CostCentreNo" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="Division" type="xs:string" minOccurs="0"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:element name="CostCentre" nillable="true" type="tns:CostCentre"/>
</xs:schema>
当我这样发送肥皂请求时
<SOAP-ENV:Body>
<ns1:UploadCostCentres xmlns:ns1="http://tempuri.org/">
<ns1:costcentres>
<ns2:CostCentre xmlns:ns2="http://schemas.datacontract.org/2004/07/Lia.Core.Models.Masterdata">
<ns2:CompanyCode>6200</ns2:CompanyCode>
<ns2:CostCentreName>Med Trsf Ingst VD(SS</ns2:CostCentreName>
<ns2:CostCentreNo>0000063190</ns2:CostCentreNo>
<ns2:Division>SuperSport International</ns2:Division>
</ns2:CostCentre>
</ns1:costcentres>
</ns1:UploadCostCentres>
</SOAP-ENV:Body>
上面的肥皂体被解析但是 ns1:costcentres 这个列表元素有空值
但如果我通过这样的请求
<SOAP-ENV:Body>
<ns1:UploadCostCentres xmlns:ns1="http://tempuri.org/">
<ns1:costcentres>
<ns1:CostCentre xmlns="http://schemas.datacontract.org/2004/07/Lia.Core.Models.Masterdata">
<CompanyCode>6200</CompanyCode>
<CostCentreName>Med Trsf Ingst VD(SS</CostCentreName>
<CostCentreNo>0000063190</CostCentreNo>
<Division>SuperSport International</Division>
</ns1:CostCentre>
</ns1:costcentres>
</ns1:UploadCostCentres>
</SOAP-ENV:Body>
然后它可以工作并传递正确的值,有人可以帮助我如何使用嵌套的命名空间前缀。
解决方案
推荐阅读
- xml - DocumentFragment 上的 XML/XSL 评估()?
- python - Python:将日期列表传递给 PostgreSQL 查询并循环 n 次
- android - 如何在 CoordinatorLayout 中使 AppBarLayout 占屏幕的 25%?
- ubuntu - 无法通过 ansible 运行 .sh 文件
- python - GridSearchCV 分数 = neg_log_loss
- c# - 将 BinaryFormatter.Deserialize 更改为 DataContractSerializer 用于并发字典
- php - Insert records for the rest of the year starting on current week
- crop - 如何裁剪特殊区域的降水 nc 文件?
- c++ - BST 说树已经被填充但是当我使用 find 函数时它不会遍历任何节点 C++
- windows - 在txt中搜索多个数字并更改变量