Raf wrote: > A quick test might be to change warn([EMAIL PROTECTED]) to: > warn($_[2]->{listItem}->[0]->{attrVal}) and see if you get 'Wert1'?
Thanks for your reply, Ralf. Finally, I got it to work an hour ago. I try no more to access the parameters directly but with help of the SOAP::Server object. Because it took me days of reading, testing and 'googling' I want to share my solution with the list. Perhaps it'll save somebody's time. Given the following xml structure of the data to process <List> <ListItem> <Name>Name1</Name> <Value>Val1</Value> </ListItem> <ListItem> <Name>Name2</Name> <Value>Val2</Value> </ListItem> </List> SOAP::Lite will build the internal representation $VAR1 = [ bless( { 'ListItem' => [ bless( { 'Name' => 'Name1', 'Value' => 'Val1' } ), bless( { 'Name' => 'Name2', 'Value' => 'Val2' } ) ] }, 'List' ) ]; To access this data structure you can use the 'valueof' method from the SOAP::SOM class, eg: use SOAP::Lite; SOAP::Transport::HTTP::CGI -> dispatch_to('MySOAPService') -> handle; BEGIN { package MySOAPService; use strict; use vars qw(@ISA); @ISA = qw(SOAP::Server::Parameters); sub ListHandler { my $self = shift; my $envelope = pop; my $i = 0; for my $item ($envelope->valueof("//ListHandler/List/ListItem")) { $ListItemName = $item->{Name}; $ListItemValue = $item->{Value}; # ... $i++; } return SOAP::Data->name("ItemCount" => $i); } } That's all. Regards Tobias