Reading Soap struct type

Diez B. Roggisch deets at nospam.web.de
Wed May 10 09:49:12 CEST 2006


Thomas Thomas schrieb:
> Hi All,
> 
> I am receiving a hash below from my Soap Interface
> 
> <SOAPpy.Types.structType item at 34661160>: {'Field12value': ':C
> F3Value', 'Field8': 'Price Text:price_text', 'Field9': 'Text with
> File:file_text
> ', 'Field11value': ':CF2Value', 'Field7': 'Product Code:product_code',
> 'Field7va
> lue': ':product_values', 'Field2': 'Job Reference:job_reference', 'Field3':
> 'Job
>  Description:job_description', 'Field6': 'Campaign Name:campaign_name',
> 'Field10
> value': ':CF1Value', 'Field6value': ':campaign_values', 'Field5':
> 'Keywords:keyw
> ords', 'Field10': 'CF1Title:custom_field1', 'Field11':
> 'CF2Title:custom_field2',
>  'Field12': 'CF3Title:custom_field3', 'Field13': 'CF4Title:custom_field4',
> 'Fiel
> d14': 'Name:meta_filename', 'Field4': 'Display Name:display_name',
> 'Field13value
> ': ':CF4Value'}
> 
> How can i iterarte through it bcz when do try do something like
> myHash.values()
> I am getting the error
> AttributeError: structType instance has no attribute 'values'

That is because it is no hash - AFAIK SOAP doesn't support hashes (or 
dicts, in python-lingo) out of the box. What you see above essentially a 
named tuple. Conceptionally like this:

class MyStruct:

     def __init__(self, foo, bar):
          self.foo = foo
          self.bar = bar


Either you access the individual values by name - or maybe there is a 
way to enumerate the names for you, but that depends on what the 
SOAPpy.Types.structType is capable of. I suggest you look at it's source.

Diez



More information about the Python-list mailing list