PyXB - Python的XMLSchema绑定包


未知
跨平台
Python

软件简介

PyXB (“pixbee”) 是一个纯 Python 的类库用来根据 XML Schema 生成对应的 Python
类,开发人员可以使用这些类来操作XML Schema 数据。

示例代码:

import weather  
import time  
import pyxb.utils.domutils as domutils  
import sys  
import pyxb.standard.bindings.soapenv as soapenv  
import pyxb.standard.bindings.soapenc as soapenc  
import urllib2

zip = 85711  
if 1 < len(sys.argv):  
    zip = int(sys.argv[1])

# Create an envelope, and give it a body that is the request for the  
# service we want.  
env = soapenv.Envelope()  
env.setBody(weather.GetCityForecastByZIP(ZIP=zip))

# Invoke the service  
uri = urllib2.Request('http://ws.cdyne.com/WeatherWS/Weather.asmx',  
                      env.toxml(),  
                      { 'SOAPAction' : "http://ws.cdyne.com/WeatherWS/GetCityForecastByZIP", 'Content-Type': 'text/xml' } )  
rxml = urllib2.urlopen(uri).read()

# Convert the response to a SOAP envelope, then extract the actual  
# response from the wildcard elements of the body.  Note that because  
# the weather namespace was registered, PyXB already created the  
# binding for the response.  
soap_resp = soapenv.CreateFromDOM(domutils.StringToDOM(rxml))  
resp = soap_resp.Body().wildcardElements()[0]

fc_return = resp.GetCityForecastByZIPResult()  
if fc_return.Success():  
    print 'Got response 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)