2012-04-20 5 views
1

PHPのビルトイン・ソープ・クライアントを使用してXML応答から属性および要素のオブジェクトとして値を取得しようとしています。私は、クラスマップでこれを解決しようとしていますが、まだ結果...クラスマップの名前

の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

私は、属性キーの値を必要とし、価格、ネットプライス、収益、要素の値。

クラスマップを使用しようとしましたが、要素の値を持つオブジェクト(属性の値が不足しています)がすべて取得されています。実際にクラスマップはどのように機能しますか? WSDLファイルは非常に複雑で長くあります。実際の質問は:クラスマップの名前は何ですか? WSDLファイル(クライアントは多くのWSDL & XSDファイルを使用しています)でどこで見つけることができますか?正しいクラスマップ名を使用していることを確認するにはどうすればよいですか? Btw、私は構文解析などを使用したくない。

ありがとうございます!

答えて

0

classmapは、WSDLモードでのみ動作します。

クライアントのインスタンスを作成した後、そのように、__getTypesを()を実行:

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

は、それはあなたがあなたのクラスにマップするために使用できるタイプのリストが表示されます。

確かならば、種類は、あなたができる、AttributPriceです:

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