From: Jason S. <jas...@gm...> - 2008-09-14 07:47:19
|
Hey Martin, On Sat, Sep 13, 2008 at 11:32 AM, Martin Kutter <mar...@fe...> wrote: > ... then we probably should change the deserializer to fill all > appropriate slots: With a XML node containing XML attributes, clearly > the attr slot should be filled. Here is what I find about the deserializer: deserialize() first calls decode() and then calls decode_object() which calls decode_value() decode_value() calls decode_object() for each child element. decode_value() returns the $child_name and the $child_value. decode_value() does *not* encode the attributes into the $child_value in any way. So that is the main issue. Here is a meta point. I have no idea why decode_object() is ever called by deserialize - presumably it sets up some important SOAP internal information. But all the XML data is present after the call to decode(). The building up of the o_value slot for the SOM object is a waste of time as far as I can tell - given that the return value of decode() is a perl data structure representation of the XML, why build up a second one that is missing data? I don't think the SOM methods should use the o_value slot, and instead should use the complete data structure that is present in the _content key of the SOM object. Given how new I am at the SOAP code, it is very likely I've misunderstood something. Any feedback? Cheers, jas. |