Python XML Schema Bindings — PyXB 1.2.6 documentation (original) (raw)
PyXB (“pixbee”) is a pure Python package that generates Python source code for classes that correspond to data structures defined by XMLSchema. The generated classes support bi-directional conversion between XMLdocuments and Python objects. In concept it is similar to JAXB for Java and CodeSynthesis XSD for C++. AThirty Second Example is at the bottom of this page. Step-by-step examples are in User Reference.
Getting Help¶
PyXB is distributed on SourceForgeand PyPI, but active development has moved to Github. Inter-release updates will be available on github on the next branch of the PyXB repository.
For support, consult the Help Forum, or subscribe to and email the mailing list.
To file a bug report or see the status of defects reported against the current release, visit the Github issues page. (Older defects were archived under Trac at SourceForge; the historical data was moved to the SF ticket interface when SourceForge stopped supporting hosted applications. Do not attempt to open new issues on SourceForge.)
For a history of releases, see Release History.
Thirty Second Example¶
An example of a program using PyXB to interact with a web service [*] using an automatically-generated module. First, retrieve the WSDL and generate the bindings:
llc[566]$ pyxbgen
--wsdl-location=http://wsf.cdyne.com/WeatherWS/Weather.asmx?WSDL
--module=weather
--write-for-customization
Retrieving WSDL from http://wsf.cdyne.com/WeatherWS/Weather.asmx?WSDL
WARNING:pyxb.binding.basis:Unable to convert DOM node {http://www.w3.org/2001/XMLSchema}schema at Weather.asmx?WSDL[4:4] to binding
PS urn:uuid:8292a36c-577f-11e4-b592-c8600024e903
WARNING:pyxb.binding.generate:Complex type {http://ws.cdyne.com/WeatherWS/}ArrayOfWeatherDescription renamed to ArrayOfWeatherDescription_
WARNING:pyxb.binding.generate:Complex type {http://ws.cdyne.com/WeatherWS/}ForecastReturn renamed to ForecastReturn_
WARNING:pyxb.binding.generate:Complex type {http://ws.cdyne.com/WeatherWS/}WeatherReturn renamed to WeatherReturn_
Python for http://ws.cdyne.com/WeatherWS/ requires 1 modules
Then write a program that uses them:
from future import print_function import time from pyxb.utils.six.moves.urllib import request as urllib_request import weather # Bindings generated by PyXB import pyxb.utils.domutils as domutils
uri = 'http://wsf.cdyne.com/WeatherWS/Weather.asmx/GetCityForecastByZIP?ZIP=55113' xml = urllib_request.urlopen(uri).read() doc = domutils.StringToDOM(xml) fc_return = weather.CreateFromDOM(doc.documentElement) if fc_return.Success: print('Weather forecast for %s, %s:' % (fc_return.City, fc_return.State)) for fc in fc_return.ForecastResult.Forecast: when = time.strftime('%A, %B %d %Y', fc.Date.timetuple()) outlook = fc.Desciption # typos in WSDL left unchanged low = fc.Temperatures.MorningLow high = fc.Temperatures.DaytimeHigh print(' %s: %s, from %s to %s' % (when, outlook, low, high))
And run it:
llc[567]$ python client_get.py Weather forecast for Saint Paul, MN: Wednesday, August 13 2014: Partly Cloudy, from 63 to 83 Thursday, August 14 2014: Partly Cloudy, from 61 to 82 Friday, August 15 2014: Partly Cloudy, from 65 to 86 Saturday, August 16 2014: Partly Cloudy, from 67 to 84 Sunday, August 17 2014: Partly Cloudy, from 67 to 82 Monday, August 18 2014: Partly Cloudy, from 67 to 83 Tuesday, August 19 2014: Partly Cloudy, from 65 to 84
That’s it.
[*] | Note: Sometime between 2014 and 2017 the CDYNE Weather Service disappeared, although as of 2017-05-13 the link to its description above was still present. If you care about weather, there is a more complex example interfacing with the National Digital Forecast Database in the examples/ndfddirectory. |
---|