我试图使用php内置的soap客户端从XML响应中获取值作为属性和元素的对象。我试图用classmap解决这个问题,但仍然没有结果......
SOAPCLIENT:
$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
我需要属性键值,价格,净价和收入以及元素的值。
我尝试使用classmap,但我得到的只是具有元素值的对象(我缺少属性的值)。实际的类图是如何工作的? WSDL文件非常复杂且冗长。实际问题是:类图的名称是什么?我在哪里可以在WSDL文件中找到它(客户端使用了许多WSDL和XSD文件)?如何确保我使用正确的类图名称?顺便说一句,我不想使用解析或类似。
谢谢!
答案 0 :(得分:0)
注意classmap
仅适用于WSDL模式。
实例化客户端后,执行__getTypes(),如下所示:
$client = new MySoapClient(...);
$types = $client->__getTypes();
它会显示一个可用于映射到班级的类型列表。
如果确实,类型为AttributPrice
,那么您可以:
$classMap = array('AttributPrice' => 'MyAttributPriceClass');
$client = new MySoapClient($wsdl, array('classmap' => $classMap));