类图的名称

时间:2012-04-20 01:22:02

标签: php xml soap wsdl

我试图使用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文件)?如何确保我使用正确的类图名称?顺便说一句,我不想​​使用解析或类似。

谢谢!

1 个答案:

答案 0 :(得分:0)

注意classmap仅适用于WSDL模式。

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

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

它会显示一个可用于映射到班级的类型列表。

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

$classMap = array('AttributPrice' => 'MyAttributPriceClass');
$client = new MySoapClient($wsdl, array('classmap' => $classMap));