It has been a while since I've used
SOAP::Lite but by taking a quick look at your code I'm thinking perhaps you should be simply building your content as XML and passing it as shown in the perldoc:
$elem = SOAP::Data->type('xml' => $xml_content);
Celebrate Intellectual Diversity