SOAPpy and ArrayOfKeyValue

Alex Ezell aezell at gmail.com
Tue Oct 9 18:26:05 EDT 2007


It's cool when you solve your own problems. It was as simple as this:

def dictToKeyValue(self, mydict):
        soap_list = []
        for key,value in mydict.items():
            inner = {"key":key,"value":value}
            soap_list.append(inner)
        return soap_list

It's just a list of dictionaries with the actual words "key" and
"value" as keys in the dictionary. I was making it much harder than it
needed to be.

SOAPpy is smart enough to handle the rest. Thanks SOAPpy!

/alex

On 10/9/07, Alex Ezell <aezell at gmail.com> wrote:
> Can anyone offer any assistance as to how to convert a basic python
> dictionary, list, or even tuple into the SOAP type "ArrayOfKeyValue"?
>
> I am currently using SOAPpy, but would be willing to change to ZSI or
> something else if it made this conversion easier.
>
> I have tried with the arrayType and structType methods in
> SOAPpy.Types, yet they don't seem to do what I need. I suspect there
> might not be just a single method call, so, I wrote something like
> this:
>
> def dictToKeyValue(self, mydict):
>         soap_list = []
>         for key,value in mydict.items():
>             inner = []
>             inner.append(SOAPpy.stringType(key,'key'))
>             inner.append(SOAPpy.stringType(value,'value'))
>             soap_list.append(SOAPpy.arrayType(inner))
>         print soap_list
>         return SOAPpy.arrayType(soap_list)
>
> As you can see, it's pretty nasty and doesn't do what I need either. I
> have a client that was written in PHP which I am converting. It uses
> this function (which calls the PEAR SOAP library):
>
> function assocArrayToKeyValue($array) {
>         $soap_array = array();
>         foreach($array as $key=>$value) {
>             $inner = array();
>             $inner[] =& new SOAP_Value('key', 'string', $key);
>             $inner[] =& new SOAP_Value('value', 'string', $value);
>             $soap_array[] =& new SOAP_Value("item",
> "{{$this->wsdl_urn}}KeyValue", $inner);
>         }
>         return $soap_array;
>     }
>
> Unfortunately, I don't really have a way to see exactly what
> $soap_array is so that I could emulate it in my Python code.
>
> Any pointers or suggestions are very much appreciated.
>
> /alex
>



More information about the Python-list mailing list