在Matlab Soap请求中创建子标签

时间:2014-10-03 07:37:59

标签: web-services matlab soap

我正在Matlab中开发一个SOAP客户端来连接Web服务。我正在做的是以下脚本:

createClassFromWsdl('http://192.168.107.239/WSDL/v4.0/iLON100.wsdl')
obj = iLON100
methods(obj)

下一步结果:

Methods for class iLON100:

Clear      Get        List       Set        display    
Delete     InvokeCmd  Read       Write      iLON100 

然后,我正在编辑方法List,以便请求服务的Items列表。 dot m文件是:

% Build up the argument lists.
values = { '','//Item[@xsi:type="Dp_Cfg"]'};
names = { 'iLonItem','xSelect'};
types = {};

% Create the message, make the call, and convert the response into a variable.
soapMessage = createSoapMessage('http://wsdl.echelon.com/web_services_ns/ilon100/v4.0/message/', 
'List', values, names, types, 'document');

我还有来自设备供应商的SOAP测试人员。然后,如果我比较两个XML请求,它们会有所不同,如下一个示例所示(首先是原始请求,其次是Matlab请求):

<SOAP-ENV:Body>
<List xmlns="http://wsdl.echelon.com/web_services_ns/ilon100/v4.0/message/">
   <iLonItem>
      <xSelect>
         //Item[@xsi:type="Dp_Cfg"]
      </xSelect>
   </iLonItem>
</List>
</SOAP-ENV:Body>



<soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
   <List xmlns="http://wsdl.echelon.com/web_services_ns/ilon100/v4.0/message/">
     <iLonItem/>
     <xSelect>Item</xSelect>
   </List>
</soap:Body>

如您所见,标签不包含在子标签中。我想知道如何做到这一点,并生成相同的XML结构,以便正确发送SOAP请求。

非常感谢你,

1 个答案:

答案 0 :(得分:0)

最后,我通过创建如下结构来解决它:

myStruct = struct('iLonItem',struct('xSelect','//Item[@xsi:type="Dp_Cfg"]'))

此结构插入“值”和方法名称“iLONItem”。