SOAP-Lite - XML Document to SOM object trouble

Posted on Wed Apr 30 00:17:16 2008 by killgore9998
XML Document to SOM object trouble
Hello, I was wondering if anyone might be able to offer some insight on my problem.

I am writing tests for a perl script 'myscript.pl' which relies on SOAP to send and receive data from a server. In an effort to simplify the tests and isolate the server from consideration, I am trying to simulate the server's xml responses using locally stored xml files rather than actually call the server's methods. In effect, this will allow me to feed custom messages into the script so that I can more easily control and analyze the output.

To do this, I have written a custom perl object with nothing but a 'call' method. 'myscript.pl' will instantiate this object instead of the usual SOAP::Lite using a uri and proxy. My call method will accept the parameters, read the appropriate XML file, and return a SOM object as if the call had really gone through to the server.

My problem is the creation of this SOM object. According to:
http://search.cpan.org/~mkutter/SOAP-Lite-0.71.04/lib/SOAP/SOM.pod

:quote:
$som = SOAP::SOM->new($message_as_xml);
As said, the need to actually create an object of this class should be very rare. However, if the need arises, the syntax must be followed. The single argument to new must be a valid XML document the parser will understand as a SOAP response.
:/quote:

My case seems to clearly be one of these rare needs. I have tried passing just about everything I can think of into this method through the $message_as_xml parameter, but I am constantly getting error messages such as "Not an ARRAY reference at /opt/perl5.6.1/lib/site_perl/5.6.1/SOAP/Lite.pm line 385" and "Can't use string ("<?xml version='1.0' encoding='ut") as an ARRAY ref while "strict refs" in use at /opt/perl5.6.1/lib/site_perl/5.6.1/SOAP/Lite.pm line 385".

I have tried passing the xml directly as a file, as a string, as a number of pre-parsed xml objects, arrays, and others, as well as a string representing the file name, and anything else I could think of, but there appears to be no information available about what exactly this needs to be. I've tried looking at the perl lite code itself to get a clue, but I'm afraid I'm not quite good enough of a perl programmer to glean any clues.

Would anyone be able to show me a simple example of how to use this method to create a SOM object from a valid XML file? I'd be extremely grateful.

--Mike
Write a response