http://www.perlmonks.org?node_id=629421


in reply to Re^3: SOAP::Deserializer problem
in thread SOAP::Deserializer problem

Sorry, my first go was more complicated than necessary. Here is a second simplified go to demonstrate my problem:
#!/usr/bin/perl use warnings; use strict; use SOAP::Lite; my $xml = <<'eof'; <?xml version="1.0"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/env +elope/"> <SOAP-ENV:Header/> <SOAP-ENV:Body> <command id="1"> <message id="2"> <time time="27.07.2007-10:37:49 +0200"/> </message> </command> </SOAP-ENV:Body> </SOAP-ENV:Envelope> eof my $som = SOAP::Deserializer->deserialize($xml); print "time = ", $som->dataof('//command/message/time')->attr->{time}, + "\n"; print "done.\n";
Output is
time = 27.07.2007-10:37:49 +0200 done.
but
Can't call method "attr" on an undefined value at deserialize-test2.pl + line 23.
as soon as the id attributes of command and message are identical. I wouldn't care if I could get the raw XML from the SOAP response. Axel.

Replies are listed 'Best First'.
Re^5: SOAP::Deserializer problem
by rahed (Scribe) on Jul 31, 2007 at 10:04 UTC
    You want to avoid the use of id attributes and rename them to some other name or qualify them in the namespace.

    SOAP protocol uses id/href attribute pairs to identify its entities.

    If you specify outputxml('true') for a soap object, a method will return raw xml code.

      Thanks a lot.

      For all practical purposes this is solved now

      Axel.