1

Perl (v5.24.1) SOAP::Lite に苦労しています。既存のデータ要素に要素を追加しようとしています。

次の構造があるとします。

use SOAP::Lite + qw/ trace /;  
my $soap = SOAP::Lite->new( proxy => 'http://soap.server.com');
$soap->on_action( sub { "http://tempuri.org/some" });
$soap->autotype(0)->readable(1);
$soap->default_ns('http://tempuri.org/');
$som = $soap->call('GetItems', SOAP::Data->name('Store')->attr( { 'xmlns'    => 'Some.Structs'} )->value(
\SOAP::Data->value(
 SOAP::Data->name('Items')->value(
  \SOAP::Data->value(
   SOAP::Data->name('Available')->value('false'),
   SOAP::Data->name('Apple')->value('1'),
   SOAP::Data->name('Orange')->value('2'),
  )),
 )),   
);

しかし、今はアイテムの「N」要素を追加したいのですが、条件に基づいてループでこれを行いたいので、これは単なる例です。次のことを試しました:

 use SOAP::Lite + qw/ trace /;  
 my $soap = SOAP::Lite->new( proxy => 'http://soap.server.com');
 $soap->on_action( sub { "http://tempuri.org/some" });
 $soap->autotype(0)->readable(1);
 $soap->default_ns('http://tempuri.org/');

 my $data1= (SOAP::Data->name('Store')->attr( { 'xmlns' => 'Some.Structs'} )->value(
   \SOAP::Data->value(
    SOAP::Data->name('Items')->value(
     \SOAP::Data->value(
     SOAP::Data->name('Available')->value('false'),
     SOAP::Data->name('Apple')->value('1'),
     SOAP::Data->name('Orange')->value('2'),
    )),
  )),   
 );
 my $data2= (SOAP::Data->name('Store')->attr( { 'xmlns' => 'Some.Structs'} )->value(
   \SOAP::Data->value(
    SOAP::Data->name('Items')->value(
     \SOAP::Data->value(
     SOAP::Data->name('Available')->value('true'),
     SOAP::Data->name('Bananas')->value('4'),
     SOAP::Data->name('Pineapple')->value('2'),
    )),
  )),   
 );

今、要素を追加しようとしています

push $data1->value, data2;

または

push ($data1,$data1);

戻り値は次のとおりです。 スカラーに対する実験的なプッシュは現在禁止されています....

最後に、要素が結合されたら送信したいのですが、これが機能するかどうかはわかりません:

$som = $soap->call('GetItems', $data1);

どんな助けでも大歓迎です....

4

2 に答える 2