<?xml version="1.0" encoding="windows-1252"?>
<node id="730438" title="Re^5: Problems with SOAP::Lite client" created="2008-12-15 10:58:55" updated="2008-12-15 10:58:55">
<type id="11">
note</type>
<author id="961">
Anonymous Monk</author>
<data>
<field name="doctext">
Well thats not detailed enough to be pseudocode, but
OK, if you really want to stick with that strategy, here it is:
&lt;readmore&gt;
&lt;c&gt;
    while($sth-&gt;fetch()) {
        my %hash;
        
        # Hash zusammenbasteln
        $hash{"kurzname"} = $kurzname;
        $hash{"plz"} = $plz;
        $hash{"stadt"} = $stadt;
        $hash{"status"} = $status;
        $hash{"typ"} = $typ;
        $hash{"zusatz"} = $zusatz;
        
        push(@ary,\%hash);
    }
    $sth-&gt;finish();
              $dss-&gt;updatePLZInformationen(\@ary);    




sub updatePLZInformationen {
    my $dss = shift;
    my $data = shift;
    
    my $plz = SOAP::Lite
    -&gt; service('file:/home/orca/oracle/DataSyncTool/config/SKADataService.wsdl');

    $plz-&gt;updatePLZInformationen(

        SOAP::Data-&gt;type("xsd:string")-&gt;name( "clientid"    =&gt; "test" ),
        SOAP::Data-&gt;type("xsd:string")-&gt;name( "securitytoken" =&gt; "test" ),
        SOAP::Data-&gt;type("tns2:PLZInfo")-&gt;name("plzinfos")-&gt;value(
            \SOAP::Data-&gt;value(
                format_plz_infos($data)
            )
        )    
    );
}

# ------------------------------------------------------------------------------------------------ #

sub format_plz_infos {
    my $plz = shift;
    my @plz_info;
    
    foreach(@$plz) {
        my $hash = $_;
        
        push(@plz_info,SOAP::Data-&gt;name("kurzname")-&gt;value($hash-&gt;{"kurzname"})-&gt;type("xsd:string"));
        push(@plz_info,SOAP::Data-&gt;name("plz")-&gt;value($hash-&gt;{"plz"})-&gt;type("xsd:string"));
        push(@plz_info,SOAP::Data-&gt;name("stadt")-&gt;value($hash-&gt;{"stadt"})-&gt;type("xsd:string"));
        push(@plz_info,SOAP::Data-&gt;name("status")-&gt;value($hash-&gt;{"status"})-&gt;type("xsd:string"));
        push(@plz_info,SOAP::Data-&gt;name("typ")-&gt;value($hash-&gt;{"typ"})-&gt;type("xsd:string"));
        push(@plz_info,SOAP::Data-&gt;name("zusatz")-&gt;value($hash-&gt;{"zusatz"})-&gt;type("xsd:string"));
    }
    return(@plz_info);
}

&lt;/c&gt;
for testing I used
&lt;c&gt;
# dummy data
my @ary =
    map {
        my $t = $_;
        scalar {
            map {$_ =&gt; "$t$_"}
            qw! kurzname plz stadt status typ zusatz !
        };
    } 1 .. 3;

use Data::Dumper;local $Data::Dumper::Indent=1;print Dumper(\@ary);
updatePLZInformationen("dss",\@ary);
&lt;/c&gt;
and the output was
&lt;c&gt;

$VAR1 = [
  {
    'kurzname' =&gt; '1kurzname',
    'zusatz' =&gt; '1zusatz',
    'status' =&gt; '1status',
    'plz' =&gt; '1plz',
    'stadt' =&gt; '1stadt',
    'typ' =&gt; '1typ'
  },
  {
    'kurzname' =&gt; '2kurzname',
    'zusatz' =&gt; '2zusatz',
    'status' =&gt; '2status',
    'plz' =&gt; '2plz',
    'stadt' =&gt; '2stadt',
    'typ' =&gt; '2typ'
  },
  {
    'kurzname' =&gt; '3kurzname',
    'zusatz' =&gt; '3zusatz',
    'status' =&gt; '3status',
    'plz' =&gt; '3plz',
    'stadt' =&gt; '3stadt',
    'typ' =&gt; '3typ'
  }
];

&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;soap:Envelope soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&gt;
  &lt;soap:Body&gt;
    &lt;updatePLZInformationen&gt;
      &lt;clientid xsi:type="xsd:string"&gt;test&lt;/clientid&gt;
      &lt;securitytoken xsi:type="xsd:string"&gt;test&lt;/securitytoken&gt;
      &lt;plzinfos xsi:type="tns2:PLZInfo"&gt;
        &lt;kurzname xsi:type="xsd:string"&gt;1kurzname&lt;/kurzname&gt;
        &lt;plz xsi:type="xsd:string"&gt;1plz&lt;/plz&gt;
        &lt;stadt xsi:type="xsd:string"&gt;1stadt&lt;/stadt&gt;
        &lt;status xsi:type="xsd:string"&gt;1status&lt;/status&gt;
        &lt;typ xsi:type="xsd:string"&gt;1typ&lt;/typ&gt;
        &lt;zusatz xsi:type="xsd:string"&gt;1zusatz&lt;/zusatz&gt;
        &lt;kurzname xsi:type="xsd:string"&gt;2kurzname&lt;/kurzname&gt;
        &lt;plz xsi:type="xsd:string"&gt;2plz&lt;/plz&gt;
        &lt;stadt xsi:type="xsd:string"&gt;2stadt&lt;/stadt&gt;
        &lt;status xsi:type="xsd:string"&gt;2status&lt;/status&gt;
        &lt;typ xsi:type="xsd:string"&gt;2typ&lt;/typ&gt;
        &lt;zusatz xsi:type="xsd:string"&gt;2zusatz&lt;/zusatz&gt;
        &lt;kurzname xsi:type="xsd:string"&gt;3kurzname&lt;/kurzname&gt;
        &lt;plz xsi:type="xsd:string"&gt;3plz&lt;/plz&gt;
        &lt;stadt xsi:type="xsd:string"&gt;3stadt&lt;/stadt&gt;
        &lt;status xsi:type="xsd:string"&gt;3status&lt;/status&gt;
        &lt;typ xsi:type="xsd:string"&gt;3typ&lt;/typ&gt;
        &lt;zusatz xsi:type="xsd:string"&gt;3zusatz&lt;/zusatz&gt;
      &lt;/plzinfos&gt;
    &lt;/updatePLZInformationen&gt;
  &lt;/soap:Body&gt;
&lt;/soap:Envelope&gt;

&lt;/c&gt;
&lt;/readmore&gt;

I suggest a refresher of [perlsub]/[perldata].</field>
<field name="root_node">
729686</field>
<field name="parent_node">
730372</field>
<field name="reputation">
0</field>
</data>
</node>
