PHP SoapClient: несколько сложных типов перезаписываются в soapcall

У меня проблема с вызовом soapclient. Soaprequest должен выглядеть так:

<eng:Compose> <!--Optional:--> <EWSComposeRequest> <!--Optional:--> <driver> <!--Optional:--> <driver>base64</driver> <!--Optional:--> <fileName>INPUT</fileName> </driver> <engineOptions> <name>FILEMAP</name> <value>DLFOUT.dlf,dummy.dlf</value> </engineOptions> <engineOptions> <name>FILEMAP</name> <value>PDFOUT.pdf,dummy.pdf</value> </engineOptions> <engineOptions> <name>RUNMODE</name> <value>PRODUCTION</value> </engineOptions> <!--Optional:--> <fileReturnRegEx>^.*.(dlf|pdf)$</fileReturnRegEx> <includeHeader>True</includeHeader> <includeMessageFile>True</includeMessageFile> <!--Optional:--> <pubFile>TestLive.pub</pubFile> </EWSComposeRequest> </eng:Compose> 

Мой soap_param:

 $soap_param = array("Compose"=> array("EWSComposeRequest" => array( "driver" => array( "driver" => $post_Driver, "fileName" => $post_FileName), "engineOptions" => array( "name" => "KEY", "value" => $INI['encodedkey']), "engineOptions" => array( "name" => "RUNMODE", "value" => $INI['runmode']), "fileReturnRegEx" => $post_FileReturnRegEx, "includeHeader" => $post_IncludeHeader, "includeMessageFile" => $post_IncludeMessage, "pubFile" => $post_PubFile))); 

Кажется, что мыльная камера работает, но … я только показываю последний элемент engineOptions. Согласно xsd элемент engineOptions может появляться несколько раз (от 0 до неограниченного). Витамин soapcall этот элемент, кажется, перезаписан. Индекс: engineOptions не уникален.

Я не могу себе представить, что я единственный, кто сталкивается с этой проблемой. Я надеюсь, что есть (простое) решение этой проблемы.

С особой благодарностью: András Szepesházi. Следующее определение $soap_param :

 $soap_param => array( 'Compose' => array( 'EWSComposeRequest' => array( 'driver' => array( 'driver' => $post_Driver, 'fileName' => $post_FileName ), 'engineOptions' => array( array( 'name' => 'KEY', 'value' => $INI['encodedkey'] ), array( 'name' => 'RUNMODE', 'value' => $INI['runmode'] ), array( 'name' => 'FILEMAP', 'value' => "DLFOUT.dlf,dummy.dlf" ), array( 'name' => 'FILEMAP', 'value' => "PDFOUT.pdf,dummy.pdf" ), ), 'fileReturnRegEx' => $post_fileReturnPattern, 'includeHeader' => $post_IncludeHeader, 'includeMessageFile' => $post_IncludeMessage, 'pubFile' => $post_PubFile ) ) ); 

Может создать следующий запрос SOAP:

  <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:hpexstream-services/Engine"> <SOAP-ENV:Header> <ns1:n>n</ns1:n> </SOAP-ENV:Header> <SOAP-ENV:Body> <ns1:Compose> <EWSComposeRequest> <driver> <driver>base64</driver> <fileName>INPUT</fileName> </driver> <engineOptions> <name>KEY</name> <value>base64</value> </engineOptions> <engineOptions> <name>RUNMODE</name> <value>PRODUCTION</value> </engineOptions> <engineOptions> <name>FILEMAP</name> <value>DLFOUT.dlf,dummy.dlf</value> </engineOptions> <engineOptions> <name>FILEMAP</name> <value>PDFOUT.pdf,dummy.pdf</value> </engineOptions> <includeHeader>true</includeHeader> <includeMessageFile>true</includeMessageFile> <pubFile>TestLive.pub</pubFile> </EWSComposeRequest> </ns1:Compose> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 

Поэтому проблема решена.