[Fedora-suds-list] suds.sax.text.Text howto

Veres-Szentkiralyi Andras vsza at vsza.hu
Wed Oct 26 11:27:13 UTC 2011


Hi,
it seems to me that the web service you're using returned an XML as a string 
(which is not pretty, but I encountered this "solution" several times) -- you 
did the same with the parameter. You should parse the XML _again_ (e.g. by 
lxml) and use that. As the sample you sent uses a private IP address, I'll 
show you an example using a public service that also uses this ugly technique.

>>> from suds.client import Client
>>> c = Client('http://www.mnb.hu/arfolyamok.asmx?WSDL')
>>> rates = c.service.GetCurrentExchangeRates()
>>> type(rates)
<class 'suds.sax.text.Text'>
>>> from lxml import etree
>>> tree = etree.fromstring(rates)
>>> tree.xpath('/MNBCurrentExchangeRates/Day/Rate[@curr="EUR"]/text()')
['298,63']

Regards,
András Veres-Szentkirályi

2011. október 26. szerda 10:11:42 dátummal jo ezt írta:
> Hi all,
> 
> I'm arguing with an object sax and I can't extract the values from it.
> Someone could please give me some help?
> 
> 
> (Pdb) type(result)
> <class 'suds.sax.text.Text'>
> 
> (Pdb) result
> <?xml version="1.0" encoding="UTF-8"?>
> <Output>
>   <OpenSession>
>     <SessionID>1e0000001333f3e9185</SessionID>
>     <user>VETER</user>
>     <nome>VETERINARI</nome>
>     <azienda>0112</azienda>
>     <ufficio>1G12</ufficio>
>     <ruolo>GC21</ruolo>
>     <dataLavoro>20111026</dataLavoro>
>     <entita>FO211212</entita>
>   </OpenSession>
> </Output>
> 
> thanks
> j
> 
> 
> from suds.client import Client
> url='http://172.28.32.185:8082/demone1/jbfServices/JBFService?wsdl'
> client = Client(url)
> 
> par=dict(
>     user='VETER',
>     password='1INTE',
>     azienda='0112',
>     ufficio='1G12',
>     ruolo='GC21',
>     entita='FO211212')
> 
> xml="""
>     <Input>
>         <OpenSession>
>             <user>%(user)s</user>
>             <password>%(password)s</password>
>             <azienda>%(azienda)s</azienda>
>             <ufficio>%(ufficio)s</ufficio>
>             <ruolo>%(ruolo)s</ruolo>
>             <entita>%(entita)s</entita>
>         </OpenSession>
>     </Input>
>     """ % par
> 
> result =  client.service.call(xml)


More information about the suds mailing list