1

我正在尝试使用php内置soap客户端从XML响应中获取作为属性和元素对象的值。我试图用classmap解决这个问题,但仍然没有结果......

肥皂客户:

$client = new MySoapClient(null, array('trace' => 1, 'login' => $myusername, 'password' => $mypassword, 'location' => $location, 'uri' => "http://www.myuri.com/", 'soapVersion' => SOAP_1_1, 'use' => SOAP_LITERAL, 'style' => 'SOAP_DOCUMENT', 'soapaction' => $Operation, 'classmap' => array('AttributPrice' => 'MyAttributPriceClass')));

$ans = $client->__call("$Operation", array("_" => $MyParameter, "parameters2" => $MyVar), array('soapaction' => "$Operation", 'uri' => "http://www.myuri.com/$FileName"));

XML 响应如下所示:ValueOfElement

我需要属性键、价格、净价格和收入的值以及元素的值。

我尝试使用类映射,但我得到的只是具有元素值的对象(我缺少属性的值)。类图实际上是如何工作的?WSDL 文件非常复杂且冗长。实际的问题是:classmap 的名称是什么?在 WSDL 文件中哪里可以找到它(客户端使用了许多 WSDL 和 XSD 文件)?如何确保自己使用正确的类映射名称?顺便说一句,我不想​​使用解析或类似的。

谢谢!!

4

1 回答 1

0

注意classmap仅适用于 WSDL 模式。

实例化客户端后,执行 __getTypes(),如下所示:

$client = new MySoapClient(...);
$types = $client->__getTypes();

它将向您显示可用于映射到您的班级的类型列表。

如果确实,类型是AttributPrice,那么您可以:

$classMap = array('AttributPrice' => 'MyAttributPriceClass');
$client = new MySoapClient($wsdl, array('classmap' => $classMap));
于 2013-05-21T03:51:18.333 回答