【问题标题】:Name of classmap类图名称
【发布时间】:2012-05-01 14:42:44
【问题描述】:

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

SOAP客户端:

$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 响应如下所示: 元素值

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

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

谢谢!!

【问题讨论】:

    标签: php xml soap wsdl


    【解决方案1】:

    注意classmap 仅适用于 WSDL 模式。

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

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

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

    如果确实是AttributPrice,那么你可以:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-25
      • 1970-01-01
      • 2021-08-25
      • 2018-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多