SOAP-Lite
view release on metacpan or search on metacpan
lib/SOAP/Data.pod view on Meta::CPAN
$response = $client->someMethod($temp_elements);
Will produce the following XML:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:namesp2="http://namespaces.soaplite.com/perl"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<namesp1:someMethod xmlns:namesp1="urn:TemperatureService">
<CallDetails xsi:type="namesp2:SomeObject">
<elem1 xsi:type="xsd:string">foo</elem1>
<elem2 xsi:type="xsd:string">baz</elem2>
<someArray xsi:type="namesp2:ArrayOf_SomeObject">
<item xsi:type="namesp2:SomeObject">123</bar>
<item xsi:type="namesp2:SomeObject">456</bar>
</someArray>
</CallDetails>
</namesp1:test>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
In the code above, the @array variable can be an array of anything. If you pass
in an array of numbers, then SOAP::Lite will properly serialize that into such.
If however you need to encode an array of complex types, then simply pass in an
array of other SOAP::Data objects and you are all set.
=head2 COMPOSING MESSAGES USING RAW XML
In some circumstances you may need to encode a message using raw unserialized
XML text. To instantiate a SOAP::Data object using raw XML, do the following:
$xml_content = "<foo><bar>123</bar></foo>";
$elem = SOAP::Data->type('xml' => $xml_content);
SOAP::Lite's serializer simple takes whatever text is passed to it, and inserts
into the encoded SOAP::Data element I<verbatim>. The text input is NOT validated to
ensure it is valid XML, nor is the resulting SOAP::Data element validated to
ensure that it will produce valid XML. Therefore, it is incumbent upon the
developer to ensure that any XML data used in this fashion is valid and will
result in a valid XML document.
=head2 MULTIPLE NAMESPACES
When working with complex types it may be necessary to declare multiple namespaces. The following code demonstrates how to do so:
$elem = SOAP::Data->name("myElement" => "myValue")
->attr( { 'xmlns:foo2' => 'urn:Foo2',
'xmlns:foo3' => 'urn:Foo3' } );
This will produce the following XML:
<myElement xmlns:foo2="urn:Foo2" xmlns:foo3="urn:Foo3">myValue</myElement>
=head1 SEE ALSO
L<SOAP::Header>, L<SOAP::SOM>, L<SOAP::Serializer>
=head1 ACKNOWLEDGEMENTS
Special thanks to O'Reilly publishing which has graciously allowed SOAP::Lite to republish and redistribute large excerpts from I<Programming Web Services with Perl>, mainly the SOAP::Lite reference found in Appendix B.
=head1 COPYRIGHT
Copyright (C) 2000-2004 Paul Kulchenko. All rights reserved.
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
=head1 AUTHORS
Paul Kulchenko (paulclinger@yahoo.com)
Randy J. Ray (rjray@blackperl.com)
Byrne Reese (byrne@majordojo.com)
=cut
( run in 0.735 second using v1.01-cache-2.11-cpan-39bf76dae61 )