spring端点soap请求有效负载子元素在其具有嵌套命名空间时被解析为xsd中的pojo时获取空值

xyhw6mcr  于 2021-08-25  发布在  Java
关注(0)|答案(0)|浏览(239)

我有这样的父母xsd

  1. <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
  2. targetNamespace="http://tempuri.org/"
  3. xmlns:ns2="http://schemas.datacontract.org/2004/07/Lia.Core.Models.Masterdata"
  4. elementFormDefault="qualified" attributeFormDefault="qualified">
  5. <xs:import namespace="http://schemas.datacontract.org/2004/07/Lia.Core.Models.Masterdata" schemaLocation="masterdataelements.xsd" />
  6. <xs:element name="UploadCostCentres">
  7. <xs:complexType>
  8. <xs:sequence>
  9. <xs:element name="costcentres" minOccurs="0">
  10. <xs:complexType>
  11. <xs:sequence>
  12. <xs:element name="CostCentre" type="ns2:CostCentre" minOccurs="0" maxOccurs="unbounded"/>
  13. </xs:sequence>
  14. </xs:complexType>
  15. </xs:element>
  16. </xs:sequence>
  17. </xs:complexType>
  18. </xs:element>
  19. <xs:element name="UploadCostCentresResponse">
  20. <xs:complexType>
  21. <xs:sequence>
  22. <xs:element name="status" type="xs:string" minOccurs="0"></xs:element>
  23. <xs:element name="message" type="xs:string" minOccurs="0"></xs:element>
  24. </xs:sequence>
  25. </xs:complexType>
  26. </xs:element>
  27. </xs:schema>

并且还有如下类型的导入xsd

  1. <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
  2. targetNamespace="http://schemas.datacontract.org/2004/07/Lia.Core.Models.Masterdata"
  3. xmlns:tns="http://schemas.datacontract.org/2004/07/Lia.Core.Models.Masterdata"
  4. elementFormDefault="qualified">
  5. <xs:complexType name="CostCentre">
  6. <xs:sequence>
  7. <xs:element name="CompanyCode" type="xs:string" minOccurs="0"></xs:element>
  8. <xs:element name="CostCentreName" type="xs:string" minOccurs="0"></xs:element>
  9. <xs:element name="CostCentreNo" type="xs:string" minOccurs="0"></xs:element>
  10. <xs:element name="Division" type="xs:string" minOccurs="0"></xs:element>
  11. </xs:sequence>
  12. </xs:complexType>
  13. <xs:element name="CostCentre" nillable="true" type="tns:CostCentre"/>
  14. </xs:schema>

当我发送这样的soap请求时

  1. <SOAP-ENV:Body>
  2. <ns1:UploadCostCentres xmlns:ns1="http://tempuri.org/">
  3. <ns1:costcentres>
  4. <ns2:CostCentre xmlns:ns2="http://schemas.datacontract.org/2004/07/Lia.Core.Models.Masterdata">
  5. <ns2:CompanyCode>6200</ns2:CompanyCode>
  6. <ns2:CostCentreName>Med Trsf Ingst VD(SS</ns2:CostCentreName>
  7. <ns2:CostCentreNo>0000063190</ns2:CostCentreNo>
  8. <ns2:Division>SuperSport International</ns2:Division>
  9. </ns2:CostCentre>
  10. </ns1:costcentres>
  11. </ns1:UploadCostCentres>
  12. </SOAP-ENV:Body>

已解析上面的soap主体,但ns1:此列表元素具有空值
但如果我通过这样的请求

  1. <SOAP-ENV:Body>
  2. <ns1:UploadCostCentres xmlns:ns1="http://tempuri.org/">
  3. <ns1:costcentres>
  4. <ns1:CostCentre xmlns="http://schemas.datacontract.org/2004/07/Lia.Core.Models.Masterdata">
  5. <CompanyCode>6200</CompanyCode>
  6. <CostCentreName>Med Trsf Ingst VD(SS</CostCentreName>
  7. <CostCentreNo>0000063190</CostCentreNo>
  8. <Division>SuperSport International</Division>
  9. </ns1:CostCentre>
  10. </ns1:costcentres>
  11. </ns1:UploadCostCentres>
  12. </SOAP-ENV:Body>

然后它工作并传递正确的值。有人能告诉我如何使用嵌套的名称空间前缀。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题