2009-07-02 18 views
35

Voglio solo sapere se esiste un programma che può convertire un file XSD in una classe Python come JAXB fa per Java?Come convertire XSD in Python Classe

+2

Dal dinamiche Pythons significa che è possibile impostare qualunque attributi desiderati su una classe, in realtà non ha definizioni di campo nello stesso modo, quindi non sono sicuro che rende molto senso . Ma ovviamente potresti usare getter e setter per fare controlli di tipo e quant'altro. Più interessante, tuttavia, sarebbe qualcosa che crea definizioni di schemi per vari framework di schemi Python come gli schemi Zope, Dexterity o SQLAlchemy. Sarebbe davvero bello se esistesse. –

risposta

28

generateDS: credo che questo sia un buon strumento ho bisogno

Edit: In realtà, generateds fa molto bene il lavoro !! Genera la classe Python con tutti i metodi (setter e getter, esporta in XML, importa da XML). Funziona molto bene!

+3

Dopo aver testato generateDS e PyXB ho deciso di usare PyXB, perché ha un migliore supporto di validazione (pattern) ed è possibile richiamare il generatore da un modulo python (setup.py) senza usare qualcosa come system(). –

+0

@ EnnoGröper Probabilmente dovresti generare le classi prima del tempo. Uno dei miei XSD risulta in un file Python a 29k righe (35k con PyXB). A meno che non si abbia accesso all'XSD necessario fino all'installazione/runtime, non generare le classi su install/runtime. –

+0

L'esportazione XML è veramente molto lenta in generaDS .... C'è qualche altra alternativa? Quale può essere veloce ed efficiente. – Nilesh

1

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

Inoltre, si potrebbe desiderare http://pyxsd.org/ funziona molto bene.

+0

Vedo che pyxsd non ha mai superato la versione 0.1. Eventuali limitazioni notevoli? – Marcin

+0

@Marcin: "Qualsiasi limite notevole" è impossibile rispondere. XSD consente di scrivere cose che * non * sono facili da tradurre in Python. È una "limitazione"? E se è così, non è una limitazione in Python stesso? L'unica cosa che puoi fare è usare PyXSD per il tuo XSD specifico e vedere se funziona per te. Se non funziona, ha una notevole limitazione. Un determinato set di XSD può essere abbastanza complesso o abbastanza semplice. –

+0

Si prega di mostrare un esempio di questa libreria in uso. –

8
+0

Errori PyXB su un XSD che ho creato usando dtd2xsd.pl (generateDS non ha alcun problema con questo XSD). PyXB sembra anche generare file più grandi (29k lines vs 35k per uno dei miei XSD). Per quanto riguarda la velocità, il tempo di compilazione sarà lo stesso per entrambi (probabilmente un secondo intero - file enormi), e durante il runtime generateDS è abbastanza veloce, quindi non mi sono preso la briga di testare l'output di PyXB - non può essere molto più veloce. –

+1

Ho trascorso la maggior parte dei due giorni cercando di usare PyXB. La documentazione è terribile, genera errori di sintassi durante la generazione da questo XSD http://www.companieshouse.gov.uk/ef/xbrl/uk/fr/gaap/ae/2009-06-21/uk-gaap-ae- 2009-06-21.xsd, a causa del fatto che gli identificatori non possono contenere trattini. –

+1

Una volta sistemati quegli errori, voglio solo iniziare ad accedere agli elementi quando ho letto in XML .... no, tutti gli esempi usano XML banale senza spazi dei nomi, e non c'è quasi nessuna documentazione API per gli oggetti oltre un mucchio di grafici incomprensibili –