1

PHP 組み込みの SOAP クライアントを使用して、XML 応答から属性と要素のオブジェクトとして値を取得しようとしています。クラスマップでこれを解決しようとしていますが、まだ結果はありません...

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 ファイルは非常に複雑で長いものです。実際の質問は次のとおりです。クラスマップの名前は何ですか? WSDL ファイルのどこにありますか (クライアントは多数の WSDL および XSD ファイルを使用しています)。正しいクラスマップ名を使用していることを確認するにはどうすればよいですか? ところで、私は解析などを使用したくありません。

ありがとう!!

4

1 に答える 1

0

classmapWSDL モードでのみ機能することに注意してください。

クライアントをインスタンス化した後、次のように __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 に答える