2009-07-02 29 views
35

Solo quiero saber si hay un programa que puede convertir un archivo XSD en una clase de Python como JAXB para Java?Cómo convertir XSD a Python Clase

+2

Dado que la dinámica de los pitones significa que se puede establecer lo que sea atributos que desee en una clase, lo que realmente no tiene definiciones de campo de la misma manera, así que no estoy seguro de que tiene tanto sentido . Pero, por supuesto, podría usar getters y setters para hacer verificaciones de tipo y otras cosas. Más interesante aún sería algo que crea definiciones de esquema para varios esquemas de esquemas Python como esquemas Zope, Dexterity o SQLAlchemy. Eso sería realmente bueno si eso existiera. –

Respuesta

28

generateDS: Creo que esta es la buena herramienta que necesito

Editar: En realidad, generateds hace muy bien el trabajo !! Genera la clase Python con todos los métodos (setters y getters, exportar a XML, importar desde XML). Funciona muy bien !

+3

Después de probar generateDS y PyXB decidí usar PyXB, porque tiene mejor soporte de validación (patrones) y es posible invocar el generador desde un módulo de python (setup.py) sin usar algo como system(). –

+0

@ EnnoGröper Probablemente deberías generar las clases antes de tiempo. Uno de mis resultados XSDs en una línea de 29k archivo de Python (35k con PyXB). A menos que no tenga acceso al XSD necesario hasta la instalación/tiempo de ejecución, no genere las clases en install/runtime. –

+0

Exportar XML es realmente muy lento en generateDS .... ¿Hay alguna otra alternativa? Que puede ser rápido y eficiente. – Nilesh

1

Mira http://pypi.python.org/pypi/rsl.xsd/0.2.3

Además, es posible que desee http://pyxsd.org/ funciona muy bien.

+0

Veo que pyxsd nunca fue más allá de una versión 0.1. ¿Alguna limitación notable? – Marcin

+0

@Marcin: "Cualquier limitación notable" es imposible de responder. XSD le permite a uno escribir cosas que no son * fáciles * de traducir a Python. ¿Es eso una "limitación"? Y si es así, ¿no es una limitación en Python? Lo único que puede hacer es usar PyXSD para sus XSD específicos y ver si le funciona. Si no funciona, entonces tiene una limitación notable. Un conjunto dado de XSD puede ser bastante complejo o bastante simple. –

+0

Por favor, muestre un ejemplo de esta biblioteca en uso. –

8
+0

Errores de PyXB en un XSD que creé usando dtd2xsd.pl (generateDS no tiene ningún problema con este XSD). PyXB también parece generar archivos más grandes (29k líneas frente a 35k para uno de mis XSD). En cuanto a la velocidad, el tiempo de compilación será el mismo para ambos (probablemente un segundo completo - archivos de gran tamaño), y en tiempo de ejecución generateDS es bastante rápido, así que no me he molestado en probar la salida de PyXB; realmente no puede ser mucho más rápido. –

+1

He pasado la mayor parte de dos días tratando de usar PyXB. La documentación es terrible, genera errores de sintaxis al generar a partir de este XSD http://www.companieshouse.gov.uk/ef/xbrl/uk/fr/gaap/ae/2009-06-21/uk-gaap-ae- 2009-06-21.xsd, debido a que los identificadores no pueden contener guiones. –

+1

Una vez que solucioné esos errores, solo quiero comenzar a acceder a los elementos cuando he leído en el XML ... no, todos los ejemplos usan XML trivial sin espacios de nombres, y casi no hay documentación de API para los objetos más allá un montón de gráficos incomprensibles –