2009-07-29 17 views
6

Ho bisogno di eseguire il porting di un codice che fa molto affidamento su lxml da un'applicazione CPython a IronPython.Come far funzionare lxml con IronPython?

lxml è molto Pythonic e mi piacerebbe continuare a usarlo sotto IronPython, ma dipende da libxslt e libxml2, che sono estensioni C.

Qualcuno sa di una soluzione alternativa per consentire lxml in IronPython o una versione di lxml che non ha quelle dipendenze dell'estensione C?

risposta

1

Qualcosa che si potrebbe avere già considerato:

Un'alternativa è quella di prima porta alla biblioteca lxml per IPY e poi il codice (a seconda della dimensione del codice). Potrebbe essere necessario scrivere alcuni wrapper C# per le chiamate C native alle estensioni C - Non sono sicuro di quali problemi, se ce ne sono, sono coinvolti in questo per quanto riguarda IPy.

O se il codice che si sta effettuando il porting è piccolo, rispetto a lxml, allora forse è sufficiente rimuovere la dipendenza lxml e utilizzare le librerie XML .NET.

+1

Grazie per queste informazioni, in questo momento stiamo seriamente prendendo in considerazione il dumping di lxml e l'utilizzo di .Net XML perché non possiamo proprio usare le estensioni C. –

2

È possibile controllare IronClad, che è un progetto open source destinato a rendere C Extensions per Python disponibile in IronPython.

+0

Grazie per la tua risposta e il tuo tempo, vorrei poter usare IronClad e probabilmente funzionerebbe nella maggior parte dei casi. Sfortunatamente il mio codice verrà eseguito come script IronPython incorporato all'interno di un server ASP.net e non posso usare alcuna estensione nativa, anche se potessi accedervi. –

+0

Non sono uno sviluppatore IronPython o Python esperto; Sono uno sviluppatore .Net che hobby in IronPython. Perdonami ignoranza qui. Sembra che lxml sia un'API piuttosto ricca, quindi sarà difficile da replicare. Un'idea che avevo era di provare a replicare quelle parti dell'API lxml che stai usando al momento. Si potrebbe guardare un progetto come http://devhawk.net/2008/05/06/Stream+Processing+XML+In+IronPython.aspx per un punto di partenza. –