SOAP XML有效的xsi:type

时间:2018-11-28 02:03:21

标签: xml soap hpsa

我正在尝试编写SOAP调用,并且示例请求如下:

<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://server.opsware.com" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
   <soapenv:Header/>
   <soapenv:Body>
      <ser:attachPolicies soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
         <self xsi:type="xsd:anyType">?</self>
         <policies xsi:type="ser:ArrayOf_xsd_anyType" soapenc:arrayType="xsd:anyType[]"/>
      </ser:attachPolicies>
   </soapenv:Body>
</soapenv:Envelope>

关于ArrayOf_xsd_anyType可能意味着什么或如何找到有效选项的任何想法?

2 个答案:

答案 0 :(得分:1)

仅是为了阐明您的术语,您显示的不是WSDL,而是示例SOAP服务的SOAP请求。 WSDL是一个XML文档,描述了请求和响应中使用的XML类型以及PortType,Binding和Service信息。

对于anyType,此链接提供了其用法的清晰概述: https://www.ibm.com/support/knowledgecenter/SSFTDH_8.0.0/com.ibm.wbpm.main.doc/topics/cbo_usinganytype.html

但是TL; DR是这样的:“ anyType允许任何数据对象,而与类型无关。如果maxOccurs> 1,则列表中的每个数据对象可以[是]不同的类型。”

这与“ complexType”相反,后者仅限于一种类型。例如,如果您有一个complexType数据数组,则所有数组值都必须是同一类型(“客户”,“地址”等)。

答案 1 :(得分:1)

名称ser:ArrayOf_xsd_anyType表示您希望在模式中为命名空间xmlns:ser="http://server.opsware.com"定义的类型。

我不知道在哪里可以找到该模式;希望此消息的收件人知道它。该页面可能会有所帮助:https://en.wikipedia.org/wiki/Opsware